在字符串开头添加/删除字符的最有效方法是什么?

时间:2014-09-30 10:56:20

标签: c# string performance concatenation

我正在做一个小型的“可扩展”C#MVC项目,对数据库进行了大量的读/写操作。

由此,我需要添加/删除输入字符串的第一个字母。


'删除'第一个字符非常简单(使用Substring方法) - 使用类似的内容:

String test = "HHello world";
test = test.Substring(1,test.Length-1);

有效地添加'字符似乎很麻烦/尴尬:

String test = "ello World";
test = "H" + test;

看到这将对很多记录进行,这是否是进行这些操作的最有效方式?

我也在测试一个字符串是否以字母'T'开头使用,如果不是,则添加'T':

String test = "Hello World";
if(test[0]!='T')
{
    test = "T" + test;
}

并想知道这是否适合此

3 个答案:

答案 0 :(得分:2)

如果您有多条记录,并且您需要在开头添加一个字符,那么您可以使用索引为http://msdn.microsoft.com/it-it/library/system.string.insert(v=vs.110).aspxString.Insert

string yourString=yourString.Insert(0,'C');

这几乎与您在原帖中所写的内容相同,但因为您似乎更喜欢使用方法而不是操作符...

如果你需要多次追加一个字符到一个字符串,那么你最好使用StringBuilder http://msdn.microsoft.com/it-it/library/system.text.stringbuilder(v=vs.110).aspx

答案 1 :(得分:1)

我认为两者都同样有效,因为两者都需要初始化新的string,因为string是不可变的。

在多次对同一个字符串执行此操作时,StringBuilder可能会在添加时派上用场。这将提高性能,而不是添加。

如果可能,您也可以选择将此操作移至数据库端。这也可能会提高性能。

答案 2 :(得分:0)

要删除我会使用remove命令,因为这并不需要知道字符串的长度:

test = test.Remove(0, 1);

您还可以将字符串视为Add和use

的数组
test = test.Insert(0, "H");

如果你总是删除然后添加一个字符,你可以再次将字符串视为一个数组,只需替换该字符。

test = (test.ToCharArray()[0] = 'H').ToString();

当对同一个字符串进行大量操作时,我会使用StringBuilder,但是在字符串上创建更快的操作会更加昂贵。