我写了这个方法来反转字符串
public string Reverse(string s)
{
if(string.IsNullOrEmpty(s))
return s;
TextElementEnumerator enumerator =
StringInfo.GetTextElementEnumerator(s);
var elements = new List<char>();
while (enumerator.MoveNext())
{
var cs = enumerator.GetTextElement().ToCharArray();
if (cs.Length > 1)
{
elements.AddRange(cs.Reverse());
}
else
{
elements.AddRange(cs);
}
}
elements.Reverse();
return string.Concat(elements);
}
现在,我不想开始讨论如何使这段代码更加高效,或者如何使用一个衬垫来代替。我知道您可以执行 Xor 和各种其他操作来潜在地改进此代码。如果我想稍后重构代码,我可以轻松地做到这一点,因为我有单元测试。
目前,这可以正确反转 BML 字符串(包括带有重音符号的字符串,例如"Les Misérables"
) 和包含组合字符的字符串,例如"Les Mise\u0301rables"
.
如果像这样表达,我的包含代理对的测试就会起作用
Assert.AreEqual("
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)