Если у меня есть строка, состоящая из букв и цифр, как я могу избавиться от всего, что находится после последнего числа в строке?
Пример:
banana_orange_62_34_wednesday станет banana_orange_62_341234_4564_www_6_j_1_rrrr станет 1234_4564_www_6_j_1Я пробовал это до сих пор:
int endIndex = inputXMLFilename.lastIndexOf("\\d+");
inputXMLFilename = inputXMLFilename.substring(0, endIndex);
Теперь, когда кто-то подчистил ваш пост, я это вижу. Я также вижу, что вы хотите вернуть все до последнего подчеркивания, а не последнее число.




Используйте замену регулярного выражения:
str = str.replaceAll("\\D+$", "");
Что означает регулярное выражение:
\D означает «не цифра»+ означает «один или несколько предыдущих терминов, жадный (как можно больше ввода)»$ означает «конец ввода»$ привязывает совпадение к концу, без которого это соответствовало бы (и удаляло) все нецифры.
lastIndexOf() работает только с обычным текстом, а не с регулярными выражениями.
Это сработало для меня. Я не знал, что знак доллара важен для этого, хотя
См. добавленное объяснение доллара
@Test
public void cutAfterLastDigit() {
String s = "banana_orange_62_34_wednesday";
Pattern pattern = Pattern.compile("^(.*\\d)");
Matcher matcher = pattern.matcher(s);
if (matcher.find()) {
System.out.println(matcher.group(0));
}
}
Покажите нам, что вы уже пробовали. SO - это не сайт "сделай это для меня".