Разделить строку, используя подстроку
У меня есть следующая строка, давайте назовем ее myString
:
file=android.txt&data=it contains android data
Как я могу извлечь подстроки android.txt
а также it contains android data
?
Я старался myString.substring(myString.lastIndexOf('=')+1, myString.length() );
но возвращается it contains android data
,
4 ответа
Вот что вы ищете:
String myString = "file=android.txt&data=it contains android data";
Pattern pattern = Pattern.compile("^file=([^&]+)&data=(.+)");
Matcher matcher = pattern.matcher(myString);
if (matcher.find()) {
String first = matcher.group(1);
String second = matcher.group(2);
}
Пробовал и проверял.
Вы можете просто использовать split
метод из String
учебный класс.
Трещина file=android.txt&data=it contains android data
на &
чтобы получить массив "file=android.txt"
а также "data=it contains android data"
,
Затем вы можете разделить каждый из этих элементов на =
так
file=android.txt
-> file
, android.txt
data=it contains android data
-> data
, it contains android data
Таким образом, ваш код может выглядеть
foreach element in data.split(&)
array = element.split(=)
get second element from array
String body = "file=android.txt&data=it contains android data"
String[] data = body.substring(body.indexOf('=')+1, body.length()).split("&data=");
// data[0] = "android.txt"
// data[1] = "it contains android data"
Ваша входная строка выглядит как строка запроса. И. е. список пар ключ / значение, разделенных символом "&".
Я бы разбил каждую пару ключ / значение на строку, а затем извлек бы значение после первого '='.
String input = "file=android.txt&data=it contains android data";
String[] items = input.split("&");
String[] results = new String[items.length];
for (int i = 0; i < items.length; i++)
{
int pos = item.indexOf("=");
if (pos == -1)
results[i] = null;
else
results[i] = items[i].substring(pos + 1);
}
// results now holds your strings.