用词分隔java中的字符串

如何将以下单词拆分为数组

That's the code

 array 0 That 1 s 2 the 3 code 

我试过这样的事

 String str = "That's the code"; String[] strs = str.split("\\'"); for (String sstr : strs) { System.out.println(sstr); } 

但输出是

 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 str = "That's the code"; String[] splitted = str.split("[\\W]"); 

对于您的输入,输出将是:

 That s the code 

如果您的字符串包含突出显示的字母,我发现最好的解决方法是:

 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". 

希望这可以帮助!

如果你想拆分非字母字符

 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 

您可以通过正则表达式进行拆分,该正则表达式可以是两个字符之一 – 引号或空格:

 String[] strs = str.split("['\\s]"); 

你应该首先使用str.replaceAll("'", " ")替换' with " " (空格),然后你可以使用str.split(" ")将字符串拆分为空格分隔符。你可以或者使用正则表达式来分割’OR空格。

您可以在正则表达式中使用OR

 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) 

split使用正则表达式并且在正则表达式中不是特殊字符,所以你不需要用\来转义它。 要表示空格,您可以使用\s (在String中需要将其写为"\\s" )。 另外,要创建字符集,可以使用“OR”运算符|a|b|c|d ,或者只使用字符类[abcd] ,这意味着与(a|b|c|d)完全相同。

为了简单起见,您可以使用

 String[] strs = str.split("'| "); 

要么

 String[] strs = str.split("'|\\s");//to include all whitespaces 

要么

 String[] strs = str.split("['\\s]");//equivalent of "'|\\s"