Как извлечь подстроку из строки в Java - PullRequest
4 голосов
/ 17 января 2011

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

спасибо.

Ответы [ 2 ]

6 голосов
/ 17 января 2011
String s = "1name: john, 2name: lice, 3name: mike";
String[] names = s.split(", "); // comma and space

for(String name : names){
   System.out.println(name);
}
6 голосов
/ 17 января 2011
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 во втором примере для пар ключ = значение, если вы хотите хранить больше данных, но я не знаю, каков ваш разделитель. Вам также необходимо сохранить объекты в качестве значений карты для хранения информации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...