Как разбить следующую строку в Java? - PullRequest
0 голосов
/ 03 февраля 2012

Я пытаюсь разбить следующую строку в основном на основе пробелов.Пожалуйста, обратитесь к следующему примеру

Name:"John Adam"  languge:"english"  Date:" August 2011"

Мне нужно разделить текст на основе каждого параметра.Например,

Name:"John Adam"

languge:"english"

Date:" August 2011"

Я не могу построить правильное регулярное выражение для этого сценария.

Любые указатели будут оценены.

-Спасибо

Ответы [ 5 ]

4 голосов
/ 03 февраля 2012
    String input = "Name:\"John Adam\"  languge:\"english\"  Date:\" August 2011\"";
    // You can define this pattern statically.
    Pattern pattern = Pattern.compile("(.*?\\:\\\".*?\\\")\\s*");
    Matcher matcher = pattern.matcher(input);
    List<String> keyValues = new LinkedList<String>();
    while(matcher.find()){
        keyValues.add(matcher.group());
    }

    //keyValues == [Name:"John Adam"  , languge:"english"  , Date:" August 2011"]
1 голос
/ 03 февраля 2012

вы можете использовать класс StringTokenizer .. так, чтобы разделить что-то с пробелами, вы можете сделать что-то вроде:

String name=" Hello world 2011";
    StringTokenizer tokens=new StringTokenizer(name);
    while(tokens.hasMoreTokens()){
            System.out.println(tokens.nextToken());
        }

и это должно разделить его на:

Hello
мир
2011

этот небольшой учебник может помочь вам: http://www.cstutoringcenter.com/tutorials/java/java5.php

0 голосов
/ 04 февраля 2012
String ourStr = "Name:\"John Adam\"  languge:\"english\"  Date:\" August 2011\"";

String[] newStr = ourStr.split(" ");

for(int i=0;i<newStr.length;i++) {
   System.out.println(newStr[i] + "\n");
}

Выход:

Name:"John Adam"

languge:"english"

Date:" August 2011"
0 голосов
/ 03 февраля 2012

Может быть проще не использовать регулярное выражение. Просто создайте цикл, который ищет двоеточие, затем двойную кавычку, затем еще одну двойную кавычку, затем пробел. (ОК, используйте регулярное выражение для бита пробела). По мере выполнения цикла вы получите String для ключа и String для значения. Вы разорвете петлю, как только не сможете найти искомого персонажа.

Прокомментируйте этот ответ, если не ясно, как это сделать, и я выложу некоторый код. Но я думаю, что дал вам достаточно, чтобы начать.

0 голосов
/ 03 февраля 2012

Я бы сначала посмотрел на использование String.split () в два прохода: первый разделитель на пробел, второй на двойные кавычки.

...