удалить кусок строки - PullRequest
       5

удалить кусок строки

0 голосов
/ 12 февраля 2009

Кто-нибудь знает лучший способ сделать это?

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 ]

4 голосов
/ 12 февраля 2009

Вы, кажется, делаете вещи по-старому VB6. Обычно рекомендуется использовать .NET-функции в VB.NET, то есть string.Substring вместо Left / Right / Mid / и т.д. функции. Похоже, вы просто пытаетесь удалить текст между строкой и внутри нее, что довольно легко сделать в одной строке.

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

На самом деле это не отличается от того, что вы сделали, за исключением того, что устраняет необходимость во временных переменных. Также обратите внимание, что есть метод string.Remove, но для его вычисления потребуется временная переменная count .

Конечно, вы можете эквивалентно использовать RegEx для удаления фрагмента строки в одну строку, но это будет довольно ненужным для такой простой задачи и, конечно, намного медленнее.

2 голосов
/ 12 февраля 2009

Вы можете попробовать это решение:

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

stringOne.Replace(stringTwo, String.Empty);

Но если в stringOne более одной строки два, они также удаляются в этом решении

0 голосов
/ 12 февраля 2009

Для начала, я думаю, что 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...