Java 按空格拆分字符串并忽略句点
我试图将Java 按空格拆分字符串并忽略句点,java,string,string-split,Java,String,String Split,我试图将字符串作为输入,按空格字符分割,以便将单词存储在数组中,然后使用这些单词与其他单词进行比较。问题是,我希望在拆分期间忽略句点,因为它们所比较的单词永远不会包含句点 例如: String testString = "This. is. a. test. string."; String[] test = testString.split(" "); for (int i = 0; i < test.length; i++) { System.out.println(test
字符串
作为输入,按空格字符分割,以便将单词存储在数组中,然后使用这些单词与其他单词进行比较。问题是,我希望在拆分期间忽略句点,因为它们所比较的单词永远不会包含句点
例如:
String testString = "This. is. a. test. string.";
String[] test = testString.split(" ");
for (int i = 0; i < test.length; i++) {
System.out.println(test[i]);
}
相反,我希望它打印出来:
This.
is.
a.
test.
string.
This
is
a
test
string
在拆分期间,我如何可以忽略该期间?如何
String[] test = testString.split("\\.[ ]*");
或
或多个句点(和省略号)
怎么样
String[] test = testString.split("\\.[ ]*");
或
或多个句点(和省略号)
替换被拆分字符串内的点
replace(“.”,“”)代码>
String testString=“This.is.a.test.String。”;
String[]test=testString.split(“”);
对于(int i=0;i
替换拆分字符串内的点替换(“.”,”)代码>
String testString=“This.is.a.test.String。”;
String[]test=testString.split(“”);
对于(int i=0;i
输入总是带有这样的句点吗?输入总是带有这样的句点吗?为什么不在之前删除它们呢?这有区别吗?这会将“.”放在字符串数组中。为什么不先删除它们呢?这有区别吗?这会将“.”放在字符串数组中。使用\s*检查多个空格。虽然这在示例输入中不再是错误的,但它只是一个示例。OP问:“我希望在拆分期间忽略周期。”我不认为这符合该要求。例如,一个带省略号的句子怎么样…@mbroshi你就不能在
后面加一个+
?我想这已经成为一个近乎犹太式的讨论了。我将删除我的否决票,让OP自己解决问题。@user2310289感谢更新的答案和正则表达式的解释。使用\s*检查多个空格。虽然示例输入不再错误,但它只是一个示例。OP问:“我希望在拆分期间忽略周期。”我不认为这符合该要求。例如,一个带省略号的句子怎么样…@mbroshi你就不能在
后面加一个+
?我想这已经成为一个近乎犹太式的讨论了。我将删除我的否决票,让OP自己解决问题。@user2310289感谢更新的答案和正则表达式的解释。
String[] test = testString.split("\\.+\\s*");
String testString = "This. is. a. test. string.";
String[] test = testString.split(" ");
for (int i = 0; i < test.length; i++) {
System.out.println(test[i].replace(".",""));
}}
public class Main {
public static void main(String[] args) {
String st = "This. is. a. test. string."";
String[] tokens = st.split(".(?=([^\"]*\"[^\"]*\")*[^\"]*$)");
for(String t : tokens) {
System.out.println("> "+t);
}
}
}
String[] test = testString.split("\\.\\s*");