我有一个字符串,其中包含我想要替换的字符。
该字符的十六进制值为96
,我想用十六进制值2D
替换该字符。我试图在字符串上做一个简单的替换,但它不起作用,因为由于某种原因它不能识别字符串。每当我打印出来时,它只会打印一个空白值:
byte testByte = byte.Parse("96", System.Globalization.NumberStyles.HexNumber);
char testChar = Convert.ToChar(testByte); // when I print this its just a blank char
所以,我继续前进并将整个字符串转换为十六进制,但我不确定如何将十六进制值字符串转换回字符串。这就是我所拥有的:
// using windows 1252 encoding
System.Text.Encoding windows1252Encoding = System.Text.Encoding.GetEncoding(1252);
byte[] myByte = windows1252Encoding.GetBytes(myString);
var myHexString = BitConverter.ToString(myByte);
myHexString = myHexString .Replace("96", "2D");
所以此时我已将十六进制值96替换为2D,但如何将此十六进制值字符串转换回字符串?任何帮助都会很棒!
答案 0 :(得分:2)
如果你实际试图用U + 002D替换U + 0096,你可以使用:
text = text.Replace("\u0096", "\u002d");
请注意,U + 0096是“守卫区域的开始”。如果您实际上是指“在Windows 1252中编码为96的值”,那么您可能需要:
text = text.Replace("\u2020", "\u002d");
(基于Wikipedia cp 1252 page,显示0x96映射到U + 2020。)
答案 1 :(得分:0)
只需将一个字符替换为另一个字符。您可以使用\x
转义码来使用十六进制中的字符代码来指定字符:
s = s.Replace('\x96', '\x2d');