用词拆分java中的字符串
如何将以下单词拆分为数组用词拆分java中的字符串,java,Java,如何将以下单词拆分为数组 这就是代码 进入 我试过这样的东西 String str = "That's the code"; String[] strs = str.split("\\'"); for (String sstr : strs) { System.out.println(sstr); } 但结果是 That s the code 您可以根据非字符字符进行拆分: String str = "That's t
这就是代码
进入
我试过这样的东西
String str = "That's the code";
String[] strs = str.split("\\'");
for (String sstr : strs) {
System.out.println(sstr);
}
但结果是
That
s the code
您可以根据非字符字符进行拆分:
String str = "That's the code";
String[] splitted = str.split("[\\W]");
对于您的输入,输出将是:
That
s
the
code
要在空白处和撇号上明确拆分,请执行以下操作:
public class Split {
public static void main(String[] args) {
String [] tokens = "That's the code".split("[\\s']");
for(String s:tokens){
System.out.println(s);
}
}
}
或在任何非单词字符上拆分:
public class Split {
public static void main(String[] args) {
String [] tokens = "That's the code".split("[\\W]");
for(String s:tokens){
System.out.println(s);
}
}
}
可以使用两个字符之一的正则表达式进行拆分-引号或空格:
String[] strs = str.split("['\\s]");
split
使用regex,在regex中,
不是特殊字符,因此不需要使用\
对其进行转义。要表示空白,可以使用\s
(字符串中的空白需要写成“\\s”
)。此外,要创建一组字符,您可以使用“或”运算符|
如a | b | c | d
,或者只使用字符类[abcd]
,其含义与(a | b | c | d)
完全相同
为了使事情变得简单,你可以使用
String[] strs = str.split("'| ");
或
或
如果您想在非字母字符上拆分
String str = "That's the code";
String[] strs = str.split("\\P{Alpha}+");
for (String sstr : strs) {
System.out.println(sstr);
}
\p{Alpha}匹配任何非字母字符,这称为POSIX字符,您可以在其中了解更多信息,这非常有用。+指示应在此类字符的任何连续字符串上拆分
输出将是
That
s
the
code
你首先应该用<代码> >“<代码> >(空白空间),使用<代码> STR.RePATALL(“”、“”)<代码>,然后使用空白代码分隔符,使用<代码> Str.S分裂(“”)将字符串拆分。。您也可以使用正则表达式在“或”空格上拆分。
您可以在正则表达式中使用或
public static void main(String[] args) {
String str = "That's the code";
String[] strs = str.split("'|\\s");
for (String sstr : strs) {
System.out.println(sstr);
}
}
字符串将被单引号(')或空格分隔。单引号不需要转义。输出将是
run:
That
s
the
code
BUILD SUCCESSFUL (total time: 0 seconds)
如果字符串包含重音字母,我发现按单词分割的最佳解决方案是:
String[] listeMots = phrase.split("\\P{L}+");
例如,如果字符串是
String phrase = "Salut mon homme, comment ça va aujourd'hui? Ce sera Noël puis Pâques bientôt.";
然后您将得到以下单词(为清晰起见,用引号和逗号分隔):
希望这有帮助 为什么不在拆分时使用空格?还要注意特殊字符,如
”
。当我们说将字符串拆分为单词时,我们的意思是这是代码,也就是和代码。这是代码
相当于这是代码
。我在比较句子。@herohuyongtao:我们为什么这么说那是两个词:那
和的收缩是
到s
@JBNizet这取决于你用词的意思。当你把What's
和What's
进行比较时,你是对的:)+1表示Unicode版本,但对于刚接触regex的人来说,此代码可能不太清楚,因此您可能应该稍微扩展一下您的答案。[\\W]和[\\s']\\W
之间的区别表示一个非单词字符,它是任何不是a-z、a-z、0-9的字符,包括(下划线)字符\\s
表示空白,因此制表符、空格、换行符等。如果我在字符串()
中添加一些内容,则\\W
将在每个paren上拆分,但是\\s
版本不会拆分。@KevinBowersox感谢您的解释+1现在了解此方法的运行时复杂性了吗?
run:
That
s
the
code
BUILD SUCCESSFUL (total time: 0 seconds)
String[] listeMots = phrase.split("\\P{L}+");
String phrase = "Salut mon homme, comment ça va aujourd'hui? Ce sera Noël puis Pâques bientôt.";
"Salut", "mon", "homme", "comment", "ça", "va", "aujourd", "hui", "Ce",
"sera", "Noël", "puis", "Pâques", "bientôt".