Вы можете сделать это:
String str = "123dance456";
String substr = "dance";
String before = str.substring(0, str.indexOf(substr));
String after = str.substring(str.indexOf(substr) + substr.length());
Или
String str = "123dance456";
String substr = "dance";
String[] parts = str.split(substr);
String before = parts[0];
String after = parts[1];
Стоит отметить, что второй ответ не будет работать, если у нас есть более чем одно вхождение подстроки. С этой целью, если только мы хотим, чтобы первый один быть признаны, было бы безопаснее вызвать раскол с лимитом:
String[] parts = str.split(substr, 2);
, который гарантирует, что возвращаемый массив имеет более двух элементов. Кроме того, поскольку split
интерпретирует его ввод как регулярное выражение, мы должны опасаться недействительного синтаксиса регулярных выражений. Таким образом, я бы предпочел первое решение, поскольку оно работает независимо от состава исходной подстроки.
Чтобы сделать первый ответ более эффективным - как это мой предпочтительный ответ - то, мы должны помнить о позиции подстроки:
final int position = str.indexOf(substr);
if (position >= 0) {
//if the substring does occur within the string, set the values accordingly
before = str.substring(0, position);
after = str.substring(position + substr.length());
} else {
//otherwise, default to the empty string (or some other value)
before = "";
after = "";
}
Он всегда платит, чтобы обратить внимание на эти маленькие краевые случаи.
Это можно сделать, но какой именно формат ??? Я имею в виду, что танец всегда будет там? –
@ dku.rajkumar: Да, подстрока «танец» всегда будет там. 'split()' должен делать трюк. Я должен был представить себе такой метод. Я думал, что мне, возможно, придется написать для него регулярное выражение.Спасибо :) – skip
, тогда нет необходимости в регулярном выражении, просто используйте String [] str =; string.split («dance»); как уже упоминалось, ответы –