用词拆分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".