【发布时间】:2015-08-20 14:07:39
【问题描述】:
当我发现一个不属于标准英文字母的字符时,我正在尝试处理一个字符串并将其分成两部分。例如This is a stríng with áccents.,我需要知道第一个或每个带重音字符的索引(í)。
我认为解决方案介于 System.Text.Encoding 和 System.Globalization 之间,但我错过了一些东西......
重要的是要知道它是否是带重音的字符,如果可能的话排除空格。
void Main()
{
var str = "This is a stríng with áccents.";
var strBeforeFirstAccent = str.Substring(0, getIndexOfFirstCharWithAccent(str));
Console.WriteLine(strBeforeFirstAccent);
}
int getIndexOfFirstCharWithAccent(string str){
//Process logic
return 13;
}
谢谢!
【问题讨论】:
-
到目前为止,您尝试完成了什么?我认为
return 13根本没有任何尝试。 -
对不起,我不知道该怎么做。我希望有人能做到。
-
@GrantWinney 这是一种非常幼稚的看法。 ASCII 是一个非常有限 的字符集,而 C#/.NET 默认情况下甚至不使用 ASCII。 C#/.NET 使用 UTF-16 格式的 Unicode,它的
non-standard English字符远多于 128-165 的 ASCII 范围。 (例如,一个带有变音符号的e怎么样,这与 ASCIIé或 ASCII 130 完全不同,它甚至不适用于我的 PC。) -
@YuvalItzchakov,从 TDD 的角度来看,
return 13是一个字符串的完美代码。只有在引入第二个字符串时才需要使代码更复杂。 -
@YuvalItzchakov,很抱歉我在开玩笑。
标签: c# linq character-encoding globalization diacritics