Заменить последнюю часть строки - PullRequest
41 голосов
/ 02 ноября 2009

Я хочу заменить последнюю строку, которая является , на )

Предположим, строка:

Вставить в двойное (имя, дата,

для преобразования в:

Вставить в двойное (имя, дата)

Ответы [ 11 ]

70 голосов
/ 02 ноября 2009

Следующий код должен заменить последнее вхождение ',' на ')'.

StringBuilder b = new StringBuilder(yourString);
b.replace(yourString.lastIndexOf(","), yourString.lastIndexOf(",") + 1, ")" );
yourString = b.toString();

Примечание Это вызовет исключения, если String не содержит ','.

37 голосов
/ 02 ноября 2009

Вы можете использовать регулярное выражение:

String aResult = "Insert into dual (name,date,".replaceAll(",$", ")");

replaceAll(...) будет сопоставлять строковую строку с заданным регулярным выражением (параметр 1) (в этом случае мы сопоставляем последний символ, если это запятая). Замените его заменой (параметр 2) (в данном случае это «)»).

Plus! Если вы хотите позаботиться о хвостовых пространствах и вкладках, вы можете просто изменить регулярное выражение на ',\[ \t\]*$'. ПРИМЕЧАНИЕ. «\[» и «\]» не имеют обратной косой черты (я не знаю, как правильно ее избежать).

Надеюсь, это поможет.

17 голосов
/ 10 марта 2011

Это пользовательский метод для замены только последней подстроки данной строки. Вам было бы полезно:

private String replaceLast(String string, String from, String to) {
     int lastIndex = string.lastIndexOf(from);
     if (lastIndex < 0) return string;
     String tail = string.substring(lastIndex).replaceFirst(from, to);
     return string.substring(0, lastIndex) + tail;
}
8 голосов
/ 02 ноября 2009
str = str.substring(0, str.lastIndexOf(",")) + ")";
2 голосов
/ 02 ноября 2009

Более читаемый способ ... который вы можете использовать, чтобы узнать о String и ее функциях

String myString = "Insert into dual (name,date,";
String newString = "";
int length = myString.length();
String lastChar = myString.substring(length-1);

if (lastChar.contains(",")) {
    newString = myString.substring(0,length-1) + ")";
} 

System.out.println(newString);
1 голос
/ 02 ноября 2009

Проверьте длину строки, проверьте последний символ (если у вас есть длина, это легко) и заменить его - при необходимости. Это решение не lang. конкретный. просто используйте здравый смысл.

0 голосов
/ 18 июня 2019

Использовать функцию Apache StringUtils removeEnd () :

StringUtils.removeEnd("www.domain.com", ".com")   = "www.domain"
0 голосов
/ 03 октября 2018

На подобный поиск я нашел этот ответ:

https://stackoverflow.com/a/37066403/875282

Я думаю, что это лучше, потому что он использует методы Java, как и предполагалось, вместо того, чтобы пытаться изобретать велосипед По сути, он читает строку в обратном направлении и использует метод replaceFirst объекта String, это именно то, что я искал.

Вот документация о методе replaceFirst String и обратной функции StringBuffer: https://docs.oracle.com/javase/8/docs/api/java/lang/String.html#replaceFirst-java.lang.String-java.lang.String-

https://docs.oracle.com/javase/8/docs/api/java/lang/StringBuffer.html#reverse--

Вот как я реализовал это, чтобы просто удалить некоторые HTML-теги «pre» из фрагмента кода, который я хотел интерпретировать. Не забудьте также перевернуть строку поиска, а затем вернуть все обратно к обычным послесловиям.

<code>private String stripHtmlPreTagsFromCodeSnippet(String snippet) {
    String halfCleanSnippet = snippet.replaceFirst("<pre>", "");
    String reverseSnippet = new StringBuffer(halfCleanSnippet).reverse().toString();
    String reverseSearch = new StringBuffer("
ToString ") обратное () ()..; String reverseCleanSnippet = reverseSnippet.replaceFirst (reverseSearch, ""); вернуть новый StringBuffer (reverseCleanSnippet) .reverse (). toString (); }
0 голосов
/ 08 октября 2015

для замены последнего символа вашей строки на )

str = str.substring(0, str.length()-1)+")";

Убедитесь, что ваша строка не пуста или не пуста.

0 голосов
/ 15 декабря 2014

что за хлопоты, если вы можете просто сделать это

word = (String) word.subSequence(0, word.length() -1);

возвращает новую строку без последней части строки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...