Разделить строку, используя подстроку

У меня есть следующая строка, давайте назовем ее 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. 
Другие вопросы по тегам