VB.NET如何使用不可中断的空格字符初始化常量

时间:2019-04-20 05:30:56

标签: vb.net const

我用C#编写了这段代码,它有效且有效。

public const char NBSP = '\u00A0';

由于某些原因,我需要在VB.net中编写此方法。我尝试了这些:

1。

Public Const NBSP As Char = "\u00A0"

错误:Option Strict On不允许从'String'到'Char'的隐式转换

2。

Public Const NBSP As Char = "\u00A0"c

错误:字符常量必须只包含一个字符。

3。

Public Const NBSP As Char = &HA0 'Or 0x00A0

错误:整数值不能转换为Char。

注意:我不能使用ChrW函数。Convert.ToChar()都不是,因为它是Const。一种解决方案可能是删除Const键,但对我来说很难看。

我认为我应该使用String而不是Char数据类型。但是不确定是否会引起任何问题?

Public Const NBSP As String = "\u00A0"

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

不同的方法。

使用整数存储值,然后使用ChrW()将其转换为char

Dim nbs1 As Integer = &HA0
Console.WriteLine("NBS" & New String({ChrW(nbs1)}))

使用字节数组并调用Encoding.Unicode.GetString()将字节数组转换为字符串。请注意,字节顺序是相反的:

Dim nbs2 As Byte() = {&HA0, &H0}
Console.WriteLine("NBS" & Encoding.Unicode.GetString(nbs2))

使用Regex.Unescape()将转义的Unicode字符“ \ uXXXX”转换为字符串:

Dim nbs3 As String = "\u00A0"
Dim nbs4 = "NBS" & Regex.Unescape(nbs3)
Console.WriteLine(nbs4)