Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/385.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何把一个句子分成几个部分?_Java_String_Sentence - Fatal编程技术网

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();
        }