(假设您正在尝试反转字符串,这从您的问题中不是很清楚......)
您可以使用这样的扩展方法:
public static class StringExtensions
{
public static string Reverse(this string s)
{
if (s == null)
throw new ArgumentNullException("s");
bool wasFormD = false;
if (s.IsNormalized(NormalizationForm.FormD))
{
wasFormD = true;
// Normalize to form C so that composite chars are represented as a single char
s = s.Normalize(NormalizationForm.FormC);
}
s = new String(((IEnumerable<char>)s).Reverse().ToArray());
// Restore normalization form D
if (wasFormD)
{
s = s.Normalize(NormalizationForm.FormD);
}
return s;
}
}
然后你可以像这样使用它:
string original = "abcdefghijklmnopqrstuvwxyz";
string reversed = original.Reverse();
注意:扩展方法的代码可能看起来比必要的复杂,但规范化技巧是必要的,以避免颠倒组合字符的顺序。如果没有这种操作,像“Les Misérables”这样的字符串将被反转为“selbaŕesiM seL”(注意“r”而不是“e”上的重音)。