任何人都知道更好的方法吗?
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)方法还是更优雅的东西?
答案 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