2016-01-18 1 views
0

Как я могу обрезать некоторую строку до тех пор, пока не получу три конкретных символа, которые являются такими же, как, например, «xyz». Чтобы быть точным, я приведу пример:Обрезка строки с обратной стороны до трех символов

Dim String1 as String = "GunsAndRosesWelcomeToTheJungle" 
Dim String2 as String = "DontCry" 
Dim ResultString as String 

Мне нужно удалить все справа, пока я не "moc" (reverse "com") в String1 и добавить string2 получить ResultString.

ResultString должно быть: "GunsAndRosesWelDontCry"

+0

Как насчет [этого] (https://dotnetfiddle.net/QMakBO)? –

+0

wingedpanther, как я уже сказал, проблема в том, что у меня есть еще несколько персонажей «com». Ян и Джамон дали мне ответ. Простое использование String.LastIndexOf – Rusmir

+0

Я использовал «GunsAndRosesWelcomeTocomeThecomJunglecom» (_4 н.с. com_) в моем примере –

ответ

2

Вы можете использовать String.IndexOf и в String.Substring и начать перед ее решить:

Dim String1 as String = "GunsAndRosesWelcomeToTheJungle" 
Dim String2 as String = "DontCry" 
Dim index = String1.IndexOf("com") 
Dim ResultString as String = String1.Substring(0, index) + String2 

Edit:

Если оба ввода подстроки и строка должна быть отменена по той или иной причине, я бы представил функцию обратной строки, подобную этой

Private Function Reverse(Val As String) As String 
    Dim charArray As Char() = Val.ToCharArray() 
    Array.Reverse(charArray) 
    Return New String(charArray) 
End Function 

И затем использовать его как этот

Dim String1 As String = "GunsAndRosesWelcomeToTheJungle" 
Dim String2 As String = "DontCry"   
Dim index = String1.Length - Reverse(String1).IndexOf(Reverse("com")) - ("com").Length 
Dim ResultString As String = String1.Substring(0, index) + String2 

Else, мы можем использовать String.LastIndexOf

Dim String1 as String = "GunsAndRosesWelcomeToTheJungle" 
Dim String2 as String = "DontCry" 
Dim index = String1.LastIndexOf("com") 
Dim ResultString as String = String1.Substring(0, index) + String2 
+0

Спасибо, Ян, но мне нужно сделать это с обратной стороны. Что делать, если у меня есть ситуация, когда у меня есть два или три места, где «com», и мне нужен последний? – Rusmir

+0

@ user5804260 Понимаю, это нужно читать с обратной стороны по требованию, не так ли? – Ian

+0

Правильно, Ян. – Rusmir

0

Вы можете попробовать этот способ,

Dim String1 As String = "GunsAndRosesWelcomeTocomeThecomJunglecom" 
Dim String2 As String = "DontCry" 
Dim ResultString As String 
Dim ar As String() = String1.Split("com") 
ResultString = ar(0) & String2 

Demo

 Смежные вопросы

  • Нет связанных вопросов^_^