如何在java中拆分以下字符串?

如何在java中拆分以下字符串?,java,regex,split,Java,Regex,Split,我试图主要基于空格拆分以下字符串。请参考以下示例 Name:"John Adam" languge:"english" Date:" August 2011" 我需要根据每个参数分割文本。例如 Name:"John Adam" languge:"english" Date:" August 2011" 我无法为此场景构造正确的正则表达式 任何指点都将不胜感激 -谢谢我将首先在两个过程中使用String.split():第一个在空格字符上拆分,第二个在双引号上拆分。我将首先在两个过程中

我试图主要基于空格拆分以下字符串。请参考以下示例

Name:"John Adam"  languge:"english"  Date:" August 2011"
我需要根据每个参数分割文本。例如

Name:"John Adam"

languge:"english"

Date:" August 2011"
我无法为此场景构造正确的正则表达式

任何指点都将不胜感激


-谢谢

我将首先在两个过程中使用String.split():第一个在空格字符上拆分,第二个在双引号上拆分。

我将首先在两个过程中使用String.split():第一个在空格字符上拆分,第二个在双引号上拆分。

String input=“Name:\“John Adam\”language:“english\“日期:\“2011年8月\”;
    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"]
//您可以静态地定义此模式。 Pattern=Pattern.compile((.*?\\:\\\”*?\\\”\\s*); Matcher Matcher=pattern.Matcher(输入); List keyValues=新建LinkedList(); while(matcher.find()){ 添加(matcher.group()); } //keyValues==[姓名:“约翰·亚当”,语言:“英语”,日期:“2011年8月”]
String input=“Name:\”约翰•亚当\”语言:\“英语\”日期:\“2011年8月\”;
//您可以静态地定义此模式。
Pattern=Pattern.compile((.*?\\:\\\”*?\\\”\\s*);
Matcher Matcher=pattern.Matcher(输入);
List keyValues=新建LinkedList();
while(matcher.find()){
添加(matcher.group());
}
//keyValues==[姓名:“约翰·亚当”,语言:“英语”,日期:“2011年8月”]

不使用正则表达式可能更简单。只要有一个循环来查找冒号,然后是双引号,然后是另一个双引号,然后是空格。(好的,对空格位使用正则表达式)。循环进行时,将得到一个字符串作为键,一个字符串作为值。一旦找不到要查找的字符,就会中断循环


如果不清楚如何做,请对此答案进行评论,我将发布一些代码。但我想我已经为您提供了足够的入门知识。

不使用正则表达式可能更简单。只需创建一个循环,查找冒号,然后查找双引号,然后再查找另一个双引号,然后查找空格。(好的,对空格位使用正则表达式)。随着循环的进行,您将得到一个键字符串和一个值字符串。一旦找不到要查找的字符,您将立即中断循环

如果不清楚如何做,请对此答案进行评论,我将发布一些代码。但我想我已经为您提供了足够的开始信息。

您可以使用该类。因此,要使用空格分割某些内容,可以执行以下操作:

String name=" Hello world 2011";
    StringTokenizer tokens=new StringTokenizer(name);
    while(tokens.hasMoreTokens()){
            System.out.println(tokens.nextToken());
        }
这应该分为:

你好
世界
2011年

本小教程可以帮助您:

您可以使用类..因此,要使用空格分割某些内容,您可以执行以下操作:

String name=" Hello world 2011";
    StringTokenizer tokens=new StringTokenizer(name);
    while(tokens.hasMoreTokens()){
            System.out.println(tokens.nextToken());
        }
这应该分为:

你好
世界
2011年

本小教程可以帮助您:

语言“英语”是一个错误还是这样?语言和“英语”之间没有
?可能重复/可能会有帮助。抱歉,这是一个打字错误。我现在已经解决了。@Aurora..您给出的引用是基于空格的分割。在我的情况下,它不会工作,因为它会分割“John”和“Adam”“也是。这是一个很好的工具。语言”英语“是一个错误还是这样?在语言和“英语”之间没有
”?可能重复/可能有助于查看抱歉,这是一个拼写错误。我现在已修复。@Aurora..您提供的引用基于空格进行拆分。在我的情况下,它将无法工作,因为它将拆分“John”和“Adam”也是。这是一个很好的工具。这是行不通的。我想你的意思是相反的?显然,首先在空格上拆分会给你标记
名称:“John
,这不是故意的。@stefan…你是对的,在我的情况下,空格分割不起作用。这不起作用。我想你的意思是相反的?显然,首先在空格上分割会给你标记
名称:“John
,这不是故意的。@stefan…你说得对,空格分割在我的情况下不起作用。非常棒的东西,这是我要找的正则表达式,感谢你的帮助。非常棒的东西,这是我要找的正则表达式,感谢你的帮助。啊,你赢了我几秒钟:)啊,你赢了我几秒钟:)
Name:"John Adam"

languge:"english"

Date:" August 2011"