Java 如何把一个句子分成几个部分?
我怎样才能把像“他和他的兄弟在踢足球”这样的句子分成几部分,像“他和”,Java 如何把一个句子分成几个部分?,java,string,sentence,Java,String,Sentence,我怎样才能把像“他和他的兄弟在踢足球”这样的句子分成几部分,像“他和”,“和他的”,“他的兄弟”,“兄弟在踢”和“踢足球”。使用Java可以做到这一点吗?假设“单词”总是用一个空格隔开。使用String.split() String[]words=“他和他的兄弟在踢足球。”.split(\\s+); for(int i=0,l=words.length;i+1
“和他的”
,“他的兄弟”
,“兄弟在踢”
和“踢足球”
。使用Java可以做到这一点吗?假设“单词”总是用一个空格隔开。使用String.split()
String[]words=“他和他的兄弟在踢足球。”.split(\\s+);
for(int i=0,l=words.length;i+1
String str=“他和他的兄弟在踢足球”;
字符串[]strArray=str.split(“”);
对于(int i=0;i使用StringTokenizer以空格或其他字符分隔
import java.util.StringTokenizer;
public class Test {
private static String[] tokenize(String str) {
StringTokenizer tokenizer = new StringTokenizer(str);
String[] arr = new String[tokenizer.countTokens()];
int i = 0;
while (tokenizer.hasMoreTokens()) {
arr[i++] = tokenizer.nextToken();
}
return arr;
}
public static void main(String[] args) {
String[] strs = tokenize("Sandy sells seashells by the sea shore.");
for (String s : strs)
System.out.println(s);
}
}
应打印:
桑迪
出售
贝壳
借
大海
海岸
可能是也可能不是您想要的。您可以使用BreakIterator类及其静态方法getSentenceInstance()。
它返回一个新的BreakIterator实例,用于默认区域设置的分句
您还可以使用getWordInstance()、getLineInstance()…来打断单词、行…等
例如:
迭代它……以获得句子……
有关更多详细信息,请查看此链接:
编辑的答案:这是一个工作代码
String sent = "My name is vivek. I work in TaxSmart";
BreakIterator bi = BreakIterator.getSentenceInstance();
bi.setText(sent);
int index = 0;
while (bi.next() != BreakIterator.DONE) {
String sentence = sent.substring(index, bi.current());
System.out.println("Sentence: " + sentence);
index = bi.current();
}
当我们讨论这个问题时,你把一个句子分成(几个部分)是什么意思?什么部分?神奇的单词是分隔符!我试过使用分隔符。但是我不能像上面那样划分句子。我的意思是我想把句子划分成上面所示的单词。谢谢你,这是工作。我还有一个问题。我可以把句子分为“他”、“他和”、“他的”、“他的兄弟”、“正在踢球的兄弟”和“踢足球”吗。我想先获取第一个单词,然后再获取另一个。@cchua,所以,在循环之前获取words[0]
。@cchua,假设你的意思是,最后一个单词的最后一个字母。String s=words[words.length-1];s.charAt(s.length()-1)
…您有更具体的规则吗?它们应该是特殊字符吗?很抱歉,您的要求似乎很模糊。只需要包括句子中出现的所有标点符号。例如“,.?!”@cchua,有正则表达式可以帮助你。我想一个例子会有帮助。编辑你的问题,给我一个你需要的确切例子。谢谢你是作品。我还有一个问题。我可以把句子分为“他”、“他和”、“他的兄弟”、“他在玩”、“踢足球”和“足球”。我不明白。你能给我一个完整的例子来运行它吗。@cchua试试看。它会被空格分割,不像在语音中。你到底想用它做什么?问题是我需要像上面一样将它分割成两个单词。稍后我会想办法与文本文件中陈述的两个单词进行比较。文本文件中包含许多l一系列句子。我不明白。你能给我一个完整的例子来运行它吗。有趣的是,第一次听说这个BreakIterator
类。我刚刚测试过,结果包含空格。例如,对于how you?
,我得到了0,3[how]3,4[]4,7[are]7,8[]8,11[you]11,12[?]
import java.util.StringTokenizer;
public class Test {
private static String[] tokenize(String str) {
StringTokenizer tokenizer = new StringTokenizer(str);
String[] arr = new String[tokenizer.countTokens()];
int i = 0;
while (tokenizer.hasMoreTokens()) {
arr[i++] = tokenizer.nextToken();
}
return arr;
}
public static void main(String[] args) {
String[] strs = tokenize("Sandy sells seashells by the sea shore.");
for (String s : strs)
System.out.println(s);
}
}
BreakIterator boundary = BreakIterator.getSentenceInstance();
boundary.setText("Your_Sentence");
int start = boundary.first();
int end = boundary.next();
String sent = "My name is vivek. I work in TaxSmart";
BreakIterator bi = BreakIterator.getSentenceInstance();
bi.setText(sent);
int index = 0;
while (bi.next() != BreakIterator.DONE) {
String sentence = sent.substring(index, bi.current());
System.out.println("Sentence: " + sentence);
index = bi.current();
}