vb.net - 如何用不可破坏的空格字符初始化常量?
问题描述
我用 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"
有什么建议么?
解决方案
不同的方法。
使用 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)
推荐阅读
- python - Spyder 不会从 Anaconda 2019.10 Navigator 启动
- node.js - 在单个页面上存储用户访问的会话
- angular - 角垫按钮:悬停背景颜色有效,如果我使用白色以外的颜色
- database - Electron - 如何在不同的应用程序安装之间保持离线数据和同步
- android - 按钮、Edittexts、Textview 等视图组件是否应该是静态的(Android Studio)
- c# - c# 从另一个方法引用标签
- java - 读取 xml 有效负载中的一个特定元素
- python - python assert 如何在字符串(数字)上工作?
- javascript - 在面向正确方向的同时绕一圈旋转对象
- websocket - aiohttp websocket 和 redis 发布/订阅