Удалить случайное выражение из строки
У меня есть строка / столбец что-то вроде этого
String a = "000003023_AggregateStopLossLimit_W x3A 973911_2012-12-22.PDF";
Я хочу создать подстроку, которая нет часть' x3A 973911'
в этом.
Что означает, что я хочу что-то вроде этого,
000003023_AggregateStopLossLimit_W_2012-12-22.PDF
Существует список таких строк, которые будут иметь разные значения, но формат будет одинаковым. Я хочу удалить часть строки, которая идет после первого пробела и заканчивается следующим «_».
Это то, что я уже сделал, это работает нормально, но хочу знать, есть ли лучший способ сделать это.
String b = a.replaceAll(a.substring(a.indexOf(" "), a.indexOf("_",a.indexOf(" "))),"");
Было бы еще лучше, если бы я мог сделать это в самой базе данных, которая является оракулом, а не в Java. Любая идея, чтобы получить эту форматированную строку из столбца непосредственно с помощью выбора?
Еще одно требование, я не хочу отображать расширение файла.
Так что ничего после «.» должно отображаться, что означает что-то вроде этого'000003023_AggregateStopLossLimit_W_2012-12-22'
Я попробовал следующее, используя предыдущее решение APC
select regexp_replace ( your_string
, '([^[:space]]*) (.*)_(.*)....'
, '\1_\3') as new_string from your_table
Это работает нормально на данный момент.
Это должно привести к удалению последних 4 символов и риску не получить правильного результата, если расширение больше или меньше 3 или строка не обрезана.
ищу более эстетичный способ сделать это.
Любой шанс?