2011-01-17 3 views
4

дорогой все, у меня есть строка, подобная этой, «... 1 имя: john, 2name: lice, 3name: mike ...». Я хочу вывести его подстроку «1 имя: john». его положение в строке не фиксировано. Я также использую метод подстроки, но не могу его получить. так что вы могли бы мне помочь.Как извлечь подстроку из строки в java

спасибо.

+0

спасибо Крис Деннетт и Хилал, я сделал с вашей помощью. – JavaMobile

+0

Вы должны принять одного из нас в качестве ответа :) –

ответ

6
String s = str.split(",")[n].trim(); 

Я предлагаю сделать карту, если позиция является случайной:

Map<Integer, String> m = new HashMap<Integer, String>(); 
for (String s : str.split(",")) { 
    s = s.trim(); 
    int keyvalstart = -1; 
    for (int i = 0; i < s.length(); i++) { 
     if (!Character.isDigit(i)) { 
     keyvalstart = i; 
     break; 
     } 
    } 
    if (keyvalstart == -1) continue; 
    String s_id = s.substring(0, keyvalstart - 1); 
    String keyvals = s.substring(keyvalstart); 
    int id  = Integer.parseInt(s_id); 
    m.put(id, keyvals); 
} 

Карта будет, таким образом, содержит список идентификаторов человека в соответствующие строки значений. Если вы хотите сохранить имена только значение элементов карты:

Map<Integer, String> m = new HashMap<Integer, String>(); 
for (String s : str.split(",")) { 
    s = s.trim(); 
    int keyvalstart = -1; 
    for (int i = 0; i < s.length(); i++) { 
     if (!Character.isDigit(i)) { 
     keyvalstart = i; 
     break; 
     } 
    } 
    if (keyvalstart == -1) continue; 
    String s_id  = s.substring(0, keyvalstart - 1); 
    int id  = Integer.parseInt(s_id); 
    String keyvals = s.substring(keyvalstart); 
    int valstart = keyvals.indexOf("name: ") + "name: ".length(); 
    String name  = keyvals.substring(valstart); 
    m.put(id, name); 
} 

Было бы проще использовать StringTokenizer во втором примере для пар ключ = значение, если вы хотите хранить больше данных, но я не знаю, что такое разделитель. Вам также необходимо сохранить объекты в качестве значений карты для хранения информации.

+0

thx, но как мы можем решить n? потому что позиция неизвестна – JavaMobile

6
String s = "1name: john, 2name: lice, 3name: mike"; 
String[] names = s.split(", "); // comma and space 

for(String name : names){ 
    System.out.println(name); 
} 
Смежные вопросы