首页 > 解决方案 > 如何用不可破坏的空格字符初始化常量?

问题描述

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

public const char NBSP = '\u00A0';

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

1.

Public Const NBSP As Char = "\u00A0"

错误:Option Strict On disallows implicit conversions from 'String' to 'Char'

2.

Public Const NBSP As Char = "\u00A0"c

错误:Character constant must contain exactly one character.

3.

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

错误:整数值无法转换为 Char。

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

我在想我应该使用 String 而不是 Char 数据类型。但不确定它是否会导致任何问题?

Public Const NBSP As String = "\u00A0"

有什么建议么?

标签: vb.netencodingcharacter-encodingconstants

解决方案


不同的方法。

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

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)

推荐阅读