删除一大块字符串

时间:2009-02-12 12:51:02

标签: vb.net string

任何人都知道更好的方法吗?

Dim Result1,Result2,FinalResult As String

Result1 = Left(sXMLResponse, sXMLResponse.IndexOf("<start>"))
Result2 = Mid(sXMLResponse, sXMLResponse.IndexOf("<end>"))

FinalResult =Result1 & Result2

当然有一个内置的String.Remove(StringOne,StringTwo)方法还是更优雅的东西?

3 个答案:

答案 0 :(得分:4)

你似乎是用旧的VB6方式做事。通常建议在VB.NET中使用.NET函数,即string.Substring而不是Left / Right / Mid / etc。功能。现在看起来你只是想删除字符串之间和字符串中的文本,这可以很容易地在一行中完成。

Dim result = sXMLResponse.Substring(0, sXMLResponse.IndexOf("<start>")) & sXMLResponse.Substring(sXMLResponse.IndexOf("<end>") + 5)

实际上它和你所做的没什么不同,除了它不需要临时变量。另请注意,有一个string.Remove方法,但需要一个临时变量来计算 count 参数。

当然,您可以等效地使用RegEx来删除一行中的字符串块,但对于这样一个简单的任务来说,这是非常不必要的,当然这也是一个很慢的问题。

答案 1 :(得分:2)

您可以尝试此解决方案:

Dim stringOne as String="ae234-asd-dddddffdfdff";
Dim stringTwo as String="-asd-";

stringOne.Replace(stringTwo, String.Empty);

但是如果stringOne中有多个stringTwo,则在此解决方案中也会删除它们

答案 2 :(得分:0)

首先,我认为Remove()会从另一个字符串中删除一个不是你想要的字符串。

您希望能够提取以一个字符串开头并以另一个字符串结尾的字符串。在哪种情况下,为什么不写自己的?类似的东西:

function extractStr (str as string, startStr as string, endStr as string) as string
    dim sPos as integer
    dim ePos as integer

    sPos = instr (str,startStr);
    ePos = instr (str,endStr);

    extractStr = str
    if ePos > 0 then
        extractStr = left (extractStr, ePos + len(endStr))
    end if
    if sPos > 0 then
        extractStr = mid (extractStr, sPos)
    end if
end