用句点分割句子

时间:2017-09-28 15:34:39

标签: java

我想用“。”分割句子。和“?”你可以使用实际输出列,但是当我使用正则表达式或 .split(“//。”)但是我收到错误因为它在先生<之后也分裂了/ strong>但这不是结束时期。如何仅包括结束时段意味着实际句子停止

 public class SentenceSplitting {
       public static void main(String[] args){
           Scanner ss= new Scanner(System.in);
           System.out.println("Enter the string");
           String sentence= ss.nextLine();

           String[] hold= sentence.split("(?<=[.!?]) (?=[^.!?])");

           for(int i=0;i<hold.length;i++){
               System.out.println(hold[i]);
           }
       } 
    }

输出

先生。
史密斯以150万美元的价格买下了cheapsite.com 他为此付出了很多 他介意吗? Adam Jones Jr.
认为他没有。
无论如何,这不是真的...
嗯,概率为.9则不是。
结果应该是:

需要的实际输出

先生。史密斯以150万美元的价格买下了cheapsite.com,即他为此付出了很多 他介意吗? 小亚当琼斯认为他没有 无论如何,这不是真的...
嗯,概率为.9则不是。

输入

先生。史密斯以150万美元的价格买下了cheapsite.com,即他为此付出了很多。他介意吗?小亚当琼斯认为他没有。无论如何,这不是真的......好吧,概率为.9则不然。结果应该是:

1 个答案:

答案 0 :(得分:0)

public class SentenceSplitting1 {
    public static void main(String[] args){
       BreakIterator iterator = BreakIterator.getSentenceInstance(Locale.US);
       String source = "Mr.Smith bought cheapsite.com for 1.5 million dollars, i.e. he paid a lot for it. Did he mind? Adam Jones Jr. thinks he didn't. In any case, this isn't true... Well, with a probability of .9 it isn't. The result should be:";
       iterator.setText(source);
       int start = iterator.first();

       for (int end = iterator.next();
                end != BreakIterator.DONE;
                start = end, end = iterator.next()) {
                System.out.println(source.substring(start,end));
}
   } 
}