基本上,我需要a b c
(单独)
从一行(每个之间有任意数量的空格“
"a" "b" "c"
是否可以使用string.split?
执行此操作我尝试了从split(".*?\".*?")
到("\\s*\"\\s*")
的所有内容。
后者有效,但它将数据拆分为数组的每个其他索引(1,3,5),其他索引为空“”
修改:
我希望这适用于任何数量/变化的字符,而不仅仅是a,b和c。 (例如:"apple" "pie" "dog boy"
)
为我的特定问题找到了解决方案(可能效率最低):
Scanner abc = new Scanner(System.in);
for loop
{
input = abc.nextLine();
Scanner in= new Scanner(input).useDelimiter("\\s*\"\\s*");
assign to appropriate index in array using in.next();
in.next(); to avoid the spaces
}
答案 0 :(得分:6)
您可以改用模式:
String str = "\"a\" \"b\" \"c\" \"\"";
Pattern pat = Pattern.compile("\"[a-z]+\"");
Matcher mat = pat.matcher(str);
while (mat.find()) {
System.out.println(mat.group());
}
对于像"a" "b" "c" ""
这样的输入,然后是:
<强>输出强>
"a"
"b"
"c"
如果你想获得没有引号的b c,你可以使用:
String str = "\"a\" \"b\" \"c\" \"\"";
Pattern pat = Pattern.compile("\"([a-z]+)\"");
Matcher mat = pat.matcher(str);
while (mat.find()) {
System.out.println(mat.group(1));
}
<强>输出强>
a
b
c
如果引号之间可以有空格,则可以使用\"([a-z\\s]+)\"
String str = "\"a\" \"b\" \"c include spaces \" \"\"";
Pattern pat = Pattern.compile("\"([a-z\\s]+)\"");
Matcher mat = pat.matcher(str);
while (mat.find()) {
System.out.println(mat.group(1));
}
<强>输出强>
a
b
c include spaces
答案 1 :(得分:2)