如何反转包含代理对的字符串

2023-11-22

我写了这个方法来反转字符串

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(使用前将#替换为@)

如何反转包含代理对的字符串 的相关文章

随机推荐

Powered by Hwhale