.net - 将字符替换为 HEX 代码的正则表达式函数
问题描述
我编写了一个代码来使用 Zebra 打印机,我需要使用带有 iso-8859-1 的特殊字符进行打印。
要打印标签,我使用 RawPrinterHelp 类并完成工作,但是当有特殊字符时不起作用。
我在此链接https://www.utf8-chartable.de/unicode-utf8-table.pl中找到了表格,并编写了一个函数,使用我标签中的正则表达式代码将特殊字符转换为十六进制 utf8。
我的功能是
Public Shared Function GetRawString(str As String) As String
Dim s As String = vbNullString
s = Regex.Replace(str, "[\p{L}-[a-zA-Z]]", Function(m) String.Join(String.Empty, m.Value.[Select](Function(c) String.Format("_c3_{0:x2}", Convert.ToInt32(c))).ToArray()))
Return s
End Function
但这导致转换后的字符串不起作用。
问题是在我的函数中替换“ c3 {0:x2}”以转换为链接中的格式的正确字符串是什么?
解决方案
我不能使用正则表达式来解决这个问题,我创建了自己的函数以供将来参考这个答案。
Public Shared Function GetRawString(str As String) As String
Dim l() As String = {"á", "à", "ã", "â", "é", "ê", "í", "ó", "ô", "õ", "ú", "ç", "Á", "À", "Ã", "Â", "É", "Ê", "Í", "Ó", "Ô", "Õ", "Ú", "Ç", "°"}
Dim c() As String = {"_c3_a1", "_c3_a0", "_c3_a3", "_c3_a2", "_c3_a9", "_c3_aa", "_c3_ad", "_c3_b3", "_c3_b4", "_c3_b5", "_c3_ba", "_c3_a7", "_c3_81", "_c3_80", "_c3_83", "_c3_82", "_c3_89", "_c3_8a", "_c3_8d", "_c3_93", "_c3_94", "_c3_95", "_c3_9a", "_c3_87", "_c2_b0"}
Dim s As String = vbNullString
For i = LBound(l) To UBound(l)
str = str.Replace(l(i), c(i))
Next
Return str
End Function
推荐阅读
- java - java Arrays.binarySearch 给出错误答案,但按位补码给出正确答案
- c++ - 递归打印单链表堆栈时遇到问题
- hibernate - 无法连接mysql和tomcat
- sql - 通过Oracle SQL中的触发器将(计数)序列值添加到列值
- r - Keras fit 函数需要以哪种形式输入和标签数据?
- python - 无法在 ArcMap 中使用 tkinter
- c++ - 使用 dlib 检测器时信号处理不正确
- python - 如何在 django 中修复双重 for 循环
- amazon-web-services - 如何清除 AWS Lambda 缓存(或强制冷启动)
- javascript - 如何让 React 功能组件呈现连续的空格字符?