亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

計算java字符串中的句子數

計算java字符串中的句子數

慕妹3146593 2021-07-13 17:14:11
我想計算一個字符串中的句子數,到目前為止我正在使用這個:int count = str.split("[!?.:]+").length;但我的字符串包含“?!?nbsp;例如在名字和單詞之間“他的名字是 Walton DC,他去年剛剛完成了他的 B.Tech。”現在使用上面的行作為示例 count 將返回 4 個句子,但只有一個。那么如何應對這些情況呢?
查看完整描述

3 回答

?
森欄

TA貢獻1810條經驗 獲得超5個贊

您可以使用BreakIterator,并檢測不同類型的文本邊界


在你的情況下句子:


private static void markBoundaries(String target, BreakIterator iterator) {

    StringBuffer markers = new StringBuffer();

    markers.setLength(target.length() + 1);

    for (int k = 0; k < markers.length(); k++) {

        markers.setCharAt(k, ' ');

    }

    int count = 0;

    iterator.setText(target);

    int boundary = iterator.first();

    while (boundary != BreakIterator.DONE) {

        markers.setCharAt(boundary, '^');

        ++count;

        boundary = iterator.next();

    }

    System.out.println(target);

    System.out.println(markers);

    System.out.println("Number of Boundaries: " + count);

    System.out.println("Number of Sentences: " + (count-1));

}


public static void main(String[] args) {

    Locale currentLocale = new Locale("en", "US");

    BreakIterator sentenceIterator

            = BreakIterator.getSentenceInstance(currentLocale);

    String someText = "He name is Walton D.C. and he just completed his B.Tech last year.";

    markBoundaries(someText, sentenceIterator);

    someText = "This order was placed for QT3000! MK?";

    markBoundaries(someText, sentenceIterator);


}

輸出將是:


He name is Walton D.C. and he just completed his B.Tech last year.

^                                                                 ^

Number of Boundaries: 2

Number of Sentences: 1

This order was placed for QT3000! MK?

^                                 ^  ^

Number of Boundaries: 3

Number of Sentences: 2


查看完整回答
反對 回復 2021-07-23
?
繁星coding

TA貢獻1797條經驗 獲得超4個贊

解決方案可能是在點的情況下,您可以檢查后面是否有空格和大寫字母。


“[點][空格][大寫字母]”


這將是對判決的肯定


更新相同的代碼:


public static void main( String args[] ) {

      // String to be scanned to find the pattern.

      String line = "This order was placed for QT3000! MK? \n Thats amazing. \n But I am not sure.";

  String pattern = "([.!?])([\\s\\n])([A-Z]*)";


  // Create a Pattern object

  Pattern r = Pattern.compile(pattern);


  // Now create matcher object.

  Matcher m = r.matcher(line);

  int count=0;

  while (m.find( )) {

      count++;

  }

  count++; //for the last line, which will not get included here.

  System.out.println("COUNT=="+count);

}


查看完整回答
反對 回復 2021-07-23
?
元芳怎么了

TA貢獻1798條經驗 獲得超7個贊

簡單的方法


公共類計數線{


public static void main(String[] args) {

    // TODO Auto-generated method stub

    String s="Find the number Sentence";

    int count=0;

    for (int i = 0; i < s.length(); i++) {

        if(s.charAt(i)==' ') {

            count++;

        }

    }

    count=count+1;

    System.out.println(count);

}

}


查看完整回答
反對 回復 2021-07-23
  • 3 回答
  • 0 關注
  • 182 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號