用逗号分隔的字符串用Regex而不是String.split分隔

时间:2016-09-16 01:30:15

标签: java regex

有没有办法可以使用正则表达式而不是String.split()使用Java中的Pattern和Matcher类来拆分此字符串?

o_9,o_8,x_7,o_6,o_5

我尝试使用"\\w"进行此操作,但它只返回m.group()o的一个组。它应该匹配除逗号之外的所有内容。有人可以帮我解决这个字符串吗?

2 个答案:

答案 0 :(得分:0)

看看这个:

String str = "o_9,o_8,x_7,o_6,o_5";
String[] getstr = str.split(',');
String str1 = getstr[0];
String str2 = getstr[1];
String str3 = getstr[2];
String str4 = getstr[3];
String str5 = getstr[4];

答案 1 :(得分:0)

我不确定你哪里出错了,但在你回答AlanMoore的有用建议时,你说你只能匹配第一个单词。下面的代码显示它匹配所有单词:

    String s = "o_9,o_8,x_7,o_6,o_5";
    Pattern p = Pattern.compile("\\w+");
    Matcher m = p.matcher(s);
    while (m.find()) {
        String matchedWord = m.group();
        System.out.println("Matched \"" + matchedWord + "\".");
    }

输出:

Matched "o_9".
Matched "o_8".
Matched "x_7".
Matched "o_6".
Matched "o_5".

对于性能,模式应该编译一次 - 最好是在类顶部附近private static final。除非你真的需要,否则避免创建一个字符串数组(如String.split()那样)。