将全角字符转换为半角字符

15

在C#中,我如何将使用全角字符的字符串转换为半角字符?

例如,给定下面的userInput,我想将Stackoverflow转换为Stackoverflow

string userInput= "Stackoverflow";
//string userInput= "Stackoverflow";

2
创建一个映射(即Dictionary<char, char>),告诉你哪个字符属于另一个字符,然后逐个字符进行翻译。 - poke
1
@AlexD 那个页面的格式简直是个笑话,对吧? - poke
@poke 这当然是一个选项,但我打赌可能有更简单的方法。Perl似乎有一个针对这种特定转换的内置函数。对于C#,我在考虑使用NFKC字符串规范化? - Mr. Smith
1
@AlexD 你可能想把这个关键点作为答案发表一下? :) - poke
1
你是不是指像这样的代码 userInput.Normalize(NormalizationForm.FormKC) - petelids
显示剩余2条评论
1个回答

26
你可以使用 string.Normalize() 方法:
string userInput = "Stackoverflow";
string result = userInput.Normalize(NormalizationForm.FormKC);
//result = "Stackoverflow"

DotNetFiddle上查看示例。

有关规范化形式的更多信息,请参阅unicode.org


拼写错误:“test.” 应更正为 “userInput.” - Darek
谢谢@Darek。已修复。 - petelids

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接