我有一个小字符串变量,包含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
答案 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, "")