我的目标是速度,必须超快。
string s = something;
for (int j = 0; j < s.Length; j++)
{
if (s[j] == 'ь')
if(s.Length>(j+1))
if(s[j+1] != 'о')
s[j] = 'ъ';
它给我一个错误错误“属性或索引器'string.this [int]'无法分配给它 - 它是只读的”
我如何以最快的方式做到这一点?
答案 0 :(得分:3)
至少有两个选择:
"ь(?!о)"
或"ьо"
的简单字符串替换,具体取决于您的需求(您的问题似乎是自相矛盾的)。我测试了StringBuilder方法与正则表达式的性能,并且差别很小 - 最多只有2倍:
Method Iterations per second StringBuilder 153480.094 Regex (uncompiled) 90021.978 Regex (compiled) 136355.787 string.Replace 1427605.174
如果性能对您至关重要,我会强烈建议进行一些性能测量,然后再得出关于最快方法的结论。
答案 1 :(得分:3)
快捷方式?使用StringBuilder
。
char*
和length
而不是string
,以便您可以就地修改缓冲区,但请确保不要修改任何string
个对象
答案 2 :(得分:2)
.Net中的字符串是只读的。您可以使用StringBuilder
。