C# 将字符串c中的特殊字符替换为unicode字符#
从c#开始,我没有看到重复的。我想做的是: 此字符串:C# 将字符串c中的特殊字符替换为unicode字符#,c#,string,C#,String,从c#开始,我没有看到重复的。我想做的是: 此字符串:İintersport 转换为此字符串:\u0130nterport 我找到了一种用unicode转换所有内容的方法,但不只是转换特殊字符 提前谢谢你的帮助 编辑: 我尝试过你的解决方案: string source = matchedWebIDDest.name; string parsedNameUnicode = string.Concat(source.Select(c => c < 32 || c > 255
İintersport
转换为此字符串:\u0130nterport
我找到了一种用unicode转换所有内容的方法,但不只是转换特殊字符
提前谢谢你的帮助
编辑:
我尝试过你的解决方案:
string source = matchedWebIDDest.name;
string parsedNameUnicode = string.Concat(source.Select(c => c < 32 || c > 255 ? "\\u" + ((int)c).ToString("x4") : c.ToString()));
string source = "İntersport";
StringBuilder sb = new StringBuilder();
foreach (char c in source)
if (c < 32 || c > 255)
sb.Append("\\u" + ((int)c).ToString("x4"));
else
sb.Append(c);
string target = sb.ToString();
string source=matchedWebIDDest.name;
string parsedNameUnicode=string.Concat(source.Select(c=>c<32|c>255?\\u“+((int)c).ToString(“x4”):c.ToString());
但是我得到:“System.Linq.Enumerable+WhereSelectEnumerableIterator`2[System.Char,System.String] “您可以尝试使用Linq:
使用System.Linq;
...
字符串source=“İintersport”;
//如果需要标准ASCII表,可能需要将255更改为127
string target=string.Concat(源
.选择(c=>c<32 | | c>255
?“\\u”+((int)c).ToString(“x4”)//特殊符号:命令一个或以上Ascii码
:c.ToString());//在ascii表[32..255]中
//\u0130体育
控制台写入(目标);
编辑:无Linq解决方案:
string source = matchedWebIDDest.name;
string parsedNameUnicode = string.Concat(source.Select(c => c < 32 || c > 255 ? "\\u" + ((int)c).ToString("x4") : c.ToString()));
string source = "İntersport";
StringBuilder sb = new StringBuilder();
foreach (char c in source)
if (c < 32 || c > 255)
sb.Append("\\u" + ((int)c).ToString("x4"));
else
sb.Append(c);
string target = sb.ToString();
string source=“İintersport”;
StringBuilder sb=新的StringBuilder();
foreach(源代码中的字符c)
如果(c<32 | | c>255)
sb.附加(“\\u”+((int)c).ToString(“x4”);
其他的
sb.附加(c);
字符串目标=sb.ToString();
您可以尝试使用Linq:
使用System.Linq;
...
字符串source=“İintersport”;
//如果需要标准ASCII表,可能需要将255更改为127
string target=string.Concat(源
.选择(c=>c<32 | | c>255
?“\\u”+((int)c).ToString(“x4”)//特殊符号:命令一个或以上Ascii码
:c.ToString());//在ascii表[32..255]中
//\u0130体育
控制台写入(目标);
编辑:无Linq解决方案:
string source = matchedWebIDDest.name;
string parsedNameUnicode = string.Concat(source.Select(c => c < 32 || c > 255 ? "\\u" + ((int)c).ToString("x4") : c.ToString()));
string source = "İntersport";
StringBuilder sb = new StringBuilder();
foreach (char c in source)
if (c < 32 || c > 255)
sb.Append("\\u" + ((int)c).ToString("x4"));
else
sb.Append(c);
string target = sb.ToString();
string source=“İintersport”;
StringBuilder sb=新的StringBuilder();
foreach(源代码中的字符c)
如果(c<32 | | c>255)
sb.附加(“\\u”+((int)c).ToString(“x4”);
其他的
sb.附加(c);
字符串目标=sb.ToString();
您可以迭代每个字符,并使用此处提供的解决方案:转换字符,然后构建一个新字符串。我看到了这一点,但它会转换我所有的字符。。不仅是那些我需要转换的,我已经复制并粘贴了你的代码,将matchedWebIDDest.name
更改为“intersport”
,添加了控制台.Write(parsedNameUnicode)代码>我已经看到了\u0130intersport
结果这很奇怪,它与您一起工作没有Linq解决方案,我想知道为什么。。。非常感谢您的帮助和耐心。现在还不清楚“特殊字符”是什么意思。İ至少是一种语言字母表中的一个字母。字母表中的字母通常不被称为“特殊”。更改字符串中文本的表示形式(转换为可以存储在不使用默认UTF-8编码的C源文件中的格式)的更大用途是什么?您可以迭代每个字符,并使用此处提供的解决方案:转换字符,然后构建新字符串。我看到了这一点,但它会转换我的所有字符。。不仅是那些我需要转换的,我已经复制并粘贴了你的代码,将matchedWebIDDest.name
更改为“intersport”
,添加了控制台.Write(parsedNameUnicode)代码>我已经看到了\u0130intersport
结果这很奇怪,它与您一起工作没有Linq解决方案,我想知道为什么。。。非常感谢您的帮助和耐心。现在还不清楚“特殊字符”是什么意思。İ至少是一种语言字母表中的一个字母。字母表中的字母通常不被称为“特殊”。更改字符串中文本的表示形式(将其转换为可以存储在不使用UTF-8默认编码的C源文件中的格式)的更大用途是什么。。。我应该如何处理这个问题?@François Richard:string
本身没有Select
,但是Linq为IEnumerable
提供了一个扩展方法Select
(string
是IEnumerable
)。请确保您在使用System.Linq时放入使用
s@François Richard:如果您不想使用Linq,您可以在StringBuilder
的帮助下构建target
字符串,请参阅我的编辑。好的,我知道了。但现在它返回“System.Linq.Enumerable+WhereSelectEnumerableInterator`2[System.Char,System.String]”目标成为上面的字符串=/我做错了什么?字符串在我的c#版本中没有Select方法。。。我应该如何处理这个问题?@François Richard:string
本身没有Select
,但是Linq为IEnumerable
提供了一个扩展方法Select
(string
是IEnumerable
)。请确保您在使用System.Linq时放入使用
s@François Richard:如果您不想使用Linq,您可以在StringBuilder
的帮助下构建target
字符串,请参阅我的编辑。好的,我知道了。但现在它返回“System.Linq.Enumerable+WhereSelectEnumerableInterator`2[System.Char,System.String]”目标成为上面的字符串=/我做错了什么?