2017-02-11 8 views
1

В моем приложении я пытаюсь сделать сухари с помощью StringBuilderКак удалить строку после второго последнего появления специального символа?

Пусть это строка:

String1>String2>String3>String4>String5> 

Теперь я хочу, чтобы удалить String5> и я хочу строку, как это:

String1>String2>String3>String4> 

Как я могу это сделать?

Пожалуйста, помогите!

+1

возможно дубликат http://stackoverflow.com/questions/10828313/remove-string-after-last-occurrence-of-character-android-java – mandar

+0

мой вопрос отличается. пожалуйста, внимательно прочитайте .. @mandar – Android

+0

'public StringBuilder delete (int start, int end)' Удаляет символы в подстроке этой последовательности. Подстрока начинается с указанного начала и продолжается до символа в конце индекса - 1 или до конца последовательности, если такой символ не существует. Если начало равно концу, никаких изменений не производится. Параметры: 'start - Начальный индекс, включительно. конец - The конечный индекс, эксклюзивный.' –

ответ

0

Разделить строку на>, а затем применить для цикла в массиве. сопоставить строку по положению. если совпадение, то удалите в противном случае добавление в новый stringBuilder.

3

вы можете использовать регулярное выражение \\w+>$

\\w+ значит матч [a-zA-Z0-9_]

>$ матч > характер, где $ означает, в конце

Regex Demo Link

String s = "String1>String2>String3>String4>String5>"; 
    String s2 = s.replaceAll("\\w+>$",""); 
    System.out.println(s2); 

Выход:

String1>String2>String3>String4> 

Примечание: Для того, чтобы избежать _ использования

String s2 = s.replaceAll("[a-zA-Z\\d]+>$",""); 

Только в том случае, если у вас есть данные с некоторыми специальными символами, как

String s = "String1>Stri$#$ng2>String3>Stri#$$#ng4>St$#:/|ring5>"; 

то выше решение не будет работать так, вы можете использовать

String s2 = s.replaceAll("[^>]+>$",""); 
    // s2 will be = String1>Stri$#$ng2>String3>Stri#$$#ng4> 

Regex Demo Link

[^>]+: ^ внутри [] работает как отрицание означает, совпадает все, кроме > характера

0

Вы можете использовать комбинацию LastIndexOf и подстроку().

Пример:

String oldValue = "String1>String2>String3>String4>String5>"; 
int lastIndex = oldValue.lastIndexOf('>', oldValue.length() - 2); 
String newValue = oldValue.substring(0, lastIndex + 1);