我正在尝试使用字符串作为分隔符来分割句子。
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.
但是,作为分隔符提到的每个字符都会发生拆分。有没有办法直接使用字符串来分割句子?还有什么办法可以使用多个字符串作为分隔符吗?
答案 0 :(得分:2)
StringTokenizer
的{{3}}表示:
为指定的字符串构造字符串标记生成器。 delim参数中的字符是用于分隔标记的分隔符。分隔符本身不会被视为令牌。
基本上,你不能使用多字符分隔符。
另一种方法是使用String.split
或Scanner
,两者都使用正则表达式作为分隔符。这为您提供了更大的灵活性。
最接近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]);
希望这有帮助。