为什么我的字符串不更新?

时间:2015-03-30 17:14:05

标签: vb.net string

我有一个小字符串变量,包含400-500个字符的空格。在Do / While循环中,我尝试了一些删除字符串部分的东西。我正在寻找循环,然后从中删除300个字符,但它似乎并没有实际从字符串中删除它。

我们是否真的无法修改字符串对象,必须强制SubString文本变量才能获得所需的结果?

Do while stringText.Length >= 300
'stringText.replace(textToRemove, "") This doesn't replace the string variable
'stringText.Remove(0,299) This also doesn't remove the specified range of characters
Loop

3 个答案:

答案 0 :(得分:4)

.NET和VB中的字符串是 immutable ,这意味着字符串一旦定义就永远不会改变。各种替换/删除方法的作用是返回 new ,修改后的字符串,您可以将其存储到同一个变量中。

像这样:

Do while stringText.Length >= 300
   stringText = stringText.Replace(textToRemove, "") 
Loop

重要的是要注意,这可能很昂贵 - 分配了一个新的字符串对象。如果您对字符串分别进行了大量修改,则每个修改都会创建一个新副本,对于大字符串,它可能会创建不必要的内存分配。

出于这个原因,我们有System.Text.StringBuilder类(如roryap所述),它允许我们直接操作字符串。阅读它。

答案 1 :(得分:2)

这些函数返回一个值,您必须将返回的值赋给原始字符串以便更新:

e.g。

stringText = stringText.replace(textToRemove, "")

否则你只是丢弃返回的值 - 函数不会改变原始字符串

答案 2 :(得分:2)

您必须为返回值

指定字符串
stringText =stringText.replace(textToRemove, "")