Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将字符串c中的特殊字符替换为unicode字符#_C#_String - Fatal编程技术网

C# 将字符串c中的特殊字符替换为unicode字符#

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

从c#开始,我没有看到重复的。我想做的是:

此字符串:
İ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[Syst‌​em.Char,System.Strin‌​g] “

您可以尝试使用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]”目标成为上面的字符串=/我做错了什么?