2016-08-27 2 views
-1

У меня есть строка, которая содержит данные с различными значениями, что-то вродеПолучение подстроки из строки в Java

String values = "firstname=john&lastname=fob&[email protected]&Telephone=3874813781" 

FYI: & является разделителем.

Я хочу, чтобы создать новую строку для всех этих параметров - ПгвЬЫате, LastName, электронная почта и т.д. ... - и я хочу, чтобы строка содержит только значение этого конкретного параметра что-то вроде

String firstname = "john"; 

и то же самое для lastname и так далее. Я думаю, что это не лучше использовать

String firstname = values.indexOf(10); 

, потому что я не знаю, сколько символов бы имени пользователя содержит, так что я мог бы пойти на Lastname так, мне было интересно, если есть лучший способ для получения значения каждого параметра и назначить его новой строке.

+1

Использование '' 'String.split (» &"); '' ', который возвращает массив строк, которые разделяются с помощью' '' & '' ' –

+0

, так что это будет выглядеть как 'String firstname = values.split (" &"); ' – jacky

+0

@jacky: вы можете увидеть мой ответ, чтобы получить разъяснение. –

ответ

1

Вы можете использовать метод split. Используйте values.split("&"), это вернет вам массив строк.

String values = "firstname=john&lastname=fob&[email protected]&Telephone=3874813781"; 
String[] parameters = values.split("&"); 
System.out.println(parameters[0]); // Prints firstname=john 
+1

Большое спасибо, он работает так, как я хотел! – jacky

+0

@jacky: Нет проблем :) –

1

Использование String values_seperated[] = values.split("&"); Который даст вам array of Strings.

так вот elements of values_seperated[] array будет:

values_seperated[0]:firstname=john 
values_seperated[1]:lastname=fob 
values_seperated[2]:[email protected] 
values_seperated[3]:Telephone=3874813781 
1
String[] split = values.split("&"); 

String firstname = null, lastname = null, email = null, Telephone = null; 

for (String string : split) { 
    String[] parts = string.split("="); 
    String key = parts[0]; 
    String value = parts[1]; 

    switch (key) { 
    case "firstname": 
     firstname = value; 
     break; 
    case "lastname": 
     lastname = value; 
     break; 
    case "email": 
     email = value; 
     break; 
    case "Telephone": 
     Telephone = value; 
     break; 
    } 
} 
0

Там есть функция Java, которая отделяет Java маркеры, основанный на разделитель, который вы хотите. Следующее решение предполагает, что будет использоваться та же последовательность параметров в строке значений:

String values = "firstname=john&lastname=fob&[email protected]&Telephone=3874813781"; 

    StringTokenizer st = new StringTokenizer(values,"&"); 
    String nextToken; 

    nextToken=st.nextToken(); 
    String firstname=nextToken.substring(nextToken.indexOf("=")+1); 

    nextToken=st.nextToken(); 
    String lastname=nextToken.substring(nextToken.indexOf("=")+1); 

    nextToken=st.nextToken(); 
    String email=nextToken.substring(nextToken.indexOf("=")+1); 

    nextToken=st.nextToken(); 
    String Telephone=nextToken.substring(nextToken.indexOf("=")+1); 

    System.out.println(firstname+" "+lastname+" "+email+" "+Telephone); 

StringTokenizer (значения, «&») разбивает строку на несколько лексем Затем один за другим вы можете назначить значения к соответствующим переменным.

st.nextToken() выбирает лексемы один за другим

Смежные вопросы