Подтвердить что ты не робот

Заменить последнюю часть строки

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

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

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

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

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

4b9b3361

Ответ 1

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

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

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

Ответ 2

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

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

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

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

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

Ответ 3

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

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;
}

Ответ 4

str = str.substring(0, str.lastIndexOf(",")) + ")";

Ответ 5

Более читаемый способ... Что вы можете использовать, чтобы узнать о 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);

Ответ 6

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

Ответ 7

Попробуйте это регулярное выражение (^.+)b(.+$)

Пример (замените последний символ b)

System.out.println("1abchhhabcjjjabc".replaceFirst("(^.+)b(.+$)", "$1$2"));

Ответ 8

Замените последнюю char вашей строки на )

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

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

Ответ 9

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

fooobar.com/questions/377692/...

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

Вот документация по методу String replaceFirst и функции реверса 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" из фрагмента кода, который я хотел интерпретировать. Не забудьте также перевернуть строку поиска, а затем вернуть все обратно к обычным послесловиям.

private String stripHtmlPreTagsFromCodeSnippet(String snippet) {
    String halfCleanSnippet = snippet.replaceFirst("<pre>", "");
    String reverseSnippet = new StringBuffer(halfCleanSnippet).reverse().toString();
    String reverseSearch = new StringBuffer("</pre>").reverse().toString();
    String reverseCleanSnippet = reverseSnippet.replaceFirst(reverseSearch, "");
    return new StringBuffer(reverseCleanSnippet).reverse().toString();
}

Ответ 10

Используйте функцию Apaches StringUtils removeEnd():

StringUtils.removeEnd("www.domain.com", ".com")   = "www.domain"

Ответ 11

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

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

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