我希望在每个空格处将一个字符串拆分成一个字符串数组。
例如:
This_sentence_gets__split.
(下划线代表空格)
变为
"This"
"sentence"
"gets"
" "
(注意双空格留作一个空格)
"split."
我认为我可以用String.split(String regex)
做到这一点,但我对正则表达式不是很好,我不知道如何实现这一点。
编辑:
第一个之后的任何空格也应该分成子串。例如:
Split___this.
变为"Split
" "
" "
"this."
答案 0 :(得分:7)
我认为这可能就是您正在寻找的内容(您可以使用\\s
类为所有空格(例如制表符,新行等)进行改进。
String data = "This_sentence__gets___split".replace('_', ' ');
// System.out.println(data);
String arr[] = data.split("(?<! ) |(?<= {2})");
for (String s : arr)
System.out.println("\"" + s + "\"");
输出:
"This"
"sentence"
" "
"gets"
" "
" "
"split."
说明:
"(?<! ) "
将仅在没有空格的空格上分割"(?<= {2})"
将在其前面分成两个空格。答案 1 :(得分:0)
并不困难:
str.split(" ");
答案 2 :(得分:0)
尝试StringTokenizer
。
StringTokenizer st = new StringTokenizer("this is a test", " ", true);
while (st.hasMoreTokens()) {
System.out.println(st.nextToken());
}
<强>更新强>
第三个参数( true )会将分隔符视为单独的标记,以便它们将单独返回。
答案 3 :(得分:0)
我对正则表达式也不是很了解,这就是我选择使用Google Guava's Splitter class的原因。
示例:
private static final Splitter splitter =
Splitter.on(',').trimResults().omitEmptyStrings();
//results in {"some", "string"}
splitter.split("some string");
您可以使用trimResults(),omitEmptyStrings()和其他选项来调整它的喜好。
:)