我想用白色空格分割字符串。但是,如果用引号括起单词,则将它们视为单个单词。
例如Word to split
。我会得到word
,to
,split
。
但如果
"word to" split
我应该"word to"
,split
。引号仍然存在。
答案 0 :(得分:3)
这就是你想要的吗?
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class TmpTest {
public static void main(String args[]) {
final String regex = "\".*?\"|\\b\\w+\\b";
final String string = "\"word to\" split i should get \"word to2\", split.";
final Pattern pattern = Pattern.compile(regex);
final Matcher matcher = pattern.matcher(string);
while (matcher.find()) {
System.out.println("Full match: " + matcher.group(0));
}
}
}
答案 1 :(得分:1)
以下是如何做到这一点:
String str = "\"word to\" split";
List<String> list = new ArrayList<String>();
Matcher m = Pattern.compile("([^\"]\\S*|\".+?\")\\s*").matcher(str);
while (m.find())
list.add(m.group(1)); // Add .replace("\"", "") to remove surrounding quotes.
System.out.println(list);