使用分隔符作为字符串拆分句子

时间:2017-08-19 16:30:00

标签: java string

我正在尝试使用字符串作为分隔符来分割句子。

String sentence = "Java and Python are programming language. Unix and Windows are operating systems."
StringTokenizer tokens = new StringTokenizer(sentence, "and");

预期产出

Java
Python are programming language. Unix
Windows are operating systems.

但是,作为分隔符提到的每个字符都会发生拆分。有没有办法直接使用字符串来分割句子?还有什么办法可以使用多个字符串作为分隔符吗?

5 个答案:

答案 0 :(得分:2)

StringTokenizer的{​​{3}}表示:

  

为指定的字符串构造字符串标记生成器。 delim参数中的字符是用于分隔标记的分隔符。分隔符本身不会被视为令牌。

基本上,你不能使用多字符分隔符。

另一种方法是使用String.splitScanner,两者都使用正则表达式作为分隔符。这为您提供了更大的灵活性。

最接近StringTokenizer的是Scanner。以下是一个示例用法:

Scanner scanner = new Scanner("Your String to Tokenize");
scanner.useDelimiter("and");
scanner.next(); // "next" is basically string tokeniser's "nextToken"

您可以使用|分隔多个内容作为分隔符,例如:

"and|or"

正如我所说,另一种方法是使用String.split。它返回一个字符串数组:

String[] result = "Your String to Tokenize".split("and");

答案 1 :(得分:0)

这是正确的行为。如果您阅读Stringtokenizer的文档,您会看到delimiter参数基本上是您要将输入拆分的字符列表。因此,字符串中的每个字符都被视为一个单独的分隔符。

要使用单词作为分隔符拆分字符串,您应使用.split()和正则表达式作为分隔符。有关示例,请参阅here

答案 2 :(得分:0)

String sentence = "Java and Python are programming language. Unix and Windows are operating systems.";

String removedAnd = sentence.replaceAll("^and$", "");

 System.out.println(removedAnd);
//Java  Python are programming language. Unix  Windows are operating systems.

答案 3 :(得分:0)

String s = "Java and Python are programming language. Unix and Windows are operating systems.";
String tmp = s.replace("and", "\n");
System.out.println(tmp)

或者您可以使用此代码

String s = "Java and Python are programming language. Unix and Windows are operating systems.";
s = s.replace("and", "\n");
System.out.println(s);

如果您不想创建新的文字

输出是:

Java 
 Python are programming language. Unix 
 Windows are operating systems.

答案 4 :(得分:-1)

试试这个,这就是你想要的。

String sentence = "Java and Python are programming language. Unix and Windows are operating systems.";
String[] s = sentence.split("[\\]*sand[\\s]*");
for(int i=0;i<s.length;i++)
    System.out.println(s[i]);

希望这有帮助。