最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java如何獲取字符串單詞個(gè)數(shù)

 更新時(shí)間:2023年03月01日 10:31:45   作者:黃寶康  
這篇文章主要介紹了Java如何獲取字符串單詞個(gè)數(shù)問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

Java獲取字符串單詞個(gè)數(shù)

 public static int getWordCount(String content){
        int count = 0;
        String cn_words = content.replaceAll("[^(\\u4e00-\\u9fa5,?!丁罚?;'‘:“”【】、)(……¥!·)]", "");
        int cn_words_count = cn_words.length();
        String non_cn_words = content.replaceAll("[^(a-zA-Z0-9`\\-=\';.,/~!@#$%^&*()_+|}{\":><?\\[\\])]", " ");
        int non_cn_words_count = 0;
        String[] temp = non_cn_words.split(" ");
        for(String ch:temp){
            if(ch.trim().length() != 0) non_cn_words_count++;
        }
        count = cn_words_count + non_cn_words_count;
        return count;
    }
    public static void main(String[] args) {
		System.out.println(getWordCount("我愛你 zhanglulu _")); // 輸出5,單詞是以空格分開,所以這里我愛你三個(gè)字加一個(gè)單詞zhanglulu和一個(gè)下劃線,空格不算。
	}

統(tǒng)計(jì)String單詞數(shù)的三種方法

統(tǒng)計(jì)字符串里包含有多少個(gè)單詞,這是Java代碼常用的場景。介紹三種簡單的方法來對其進(jìn)行統(tǒng)計(jì)。這里所謂的單詞,是指連續(xù)的非空字符串。如“Hello”則為一個(gè)詞,“I love Guangzhou”則為三個(gè)詞。

方法一:使用split

在類String中,有split()這個(gè)方法,可以將字符進(jìn)行分割??梢酝ㄟ^對字符串以空白字符進(jìn)行分割,則可以得到結(jié)果。

public int countWithSplit(String str) {
? ? if (Strings.isNullOrEmpty(str)) {
? ? ? ? return 0;
? ? }
? ? return str.split("\\s+").length;
}

代碼中"\\s+"為正則表達(dá)式,表示所有的空白字符。

方法二:使用StringTokenizer

public int countWithStringTokenizer(String str) {
? ? if (Strings.isNullOrEmpty(str)) {
? ? ? ? return 0;
? ? }
? ? StringTokenizer tokenizer = new StringTokenizer(str);
? ? return tokenizer.countTokens();
}

StringTokenizer是一個(gè)很有用的類,構(gòu)造函數(shù)有三個(gè):

  • 1. StringTokenizer(String str) :構(gòu)造一個(gè)用來解析 str 的 StringTokenizer 對象。java 默認(rèn)的分隔符是空格("")、制表符(\t)、換行符(\n)、回車符(\r)。
  • 2. StringTokenizer(String str, String delim) :構(gòu)造一個(gè)用來解析 str 的 StringTokenizer 對象,并提供一個(gè)指定的分隔符。
  • 3. StringTokenizer(String str, String delim, boolean returnDelims) :構(gòu)造一個(gè)用來解析 str 的 StringTokenizer 對象,并提供一個(gè)指定的分隔符,同時(shí),指定是否返回分隔符。

方法三:使用原始的char判斷

public int countWithChar(String str) {
? ? if (Strings.isNullOrEmpty(str)) {
? ? ? ? return 0;
? ? }
? ? int wordCount = 0;
? ? boolean isWord = false;
? ? int endOfLine = str.length() - 1;
? ? char[] chars = str.toCharArray();
?
? ? for (int i = 0; i < chars.length; i++) {
? ? ? ? // 如果是非空字符, word = true.
? ? ? ? if (isWord(chars[i]) && i != endOfLine) {
? ? ? ? ? ? isWord = true;
?
? ? ? ? ? ? // 非空字符后遇到空字符,則數(shù)量加1
? ? ? ? } else if (!isWord(chars[i]) && isWord) {
? ? ? ? ? ? wordCount++;
? ? ? ? ? ? isWord = false;
? ? ? ? ? ? // 非空字符后遇到行尾
? ? ? ? } else if (isWord(chars[i]) && i == endOfLine) {
? ? ? ? ? ? wordCount++;
? ? ? ? }
? ? }
? ? return wordCount;
}
?
private boolean isWord(char c) {
? ? return c != ' '
? ? ? ? ? ? && c != '\t'
? ? ? ? ? ? && c != '\n'
? ? ? ? ? ? && c != '\r'
? ? ? ? ? ? && c != '\f';
}

測試代碼

簡單寫了幾個(gè)測試用例,測試通過。

public class CountWordTest {
? ? private CountWord countWord = new CountWord();
?
? ? @Test
? ? public void test() {
? ? ? ? testStringCount(null, 0);
? ? ? ? testStringCount("", 0);
? ? ? ? testStringCount(" ", 0);
? ? ? ? testStringCount(" \t\r\n\f", 0);
? ? ? ? testStringCount("0", 1);
? ? ? ? testStringCount("abcdef", 1);
? ? ? ? testStringCount("a b c", 3);
? ? ? ? testStringCount("a,b,c", 1);
? ? ? ? testStringCount("a\rb\nc", 3);
? ? ? ? testStringCount("a,b\t\nc", 2);
? ? }
?
? ? private void testStringCount(String str, int expectedCount) {
? ? ? ? assertEquals(expectedCount, countWord.countWithSplit(str));
? ? ? ? assertEquals(expectedCount, countWord.countWithStringTokenizer(str));
? ? ? ? assertEquals(expectedCount, countWord.countWithChar(str));
? ? }
}

這三種方法都非常簡單,沒有什么技術(shù)難點(diǎn),用到了String、StringTokenizer、正則、Guava、JUnit等,非?;A(chǔ)。

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • java中String.matches方法使用

    java中String.matches方法使用

    String.matches()方法用于檢測字符串是否符合特定的正則表達(dá)式,詳細(xì)介紹了如何使用String.matches()配合不同的正則表達(dá)式來匹配各種特定格式的字符串,感興趣的可以了解一下
    2024-09-09
  • Java Synchronized的使用詳解

    Java Synchronized的使用詳解

    這篇文章主要介紹了Java Synchronized的使用詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • Spring Boot項(xiàng)目中集成微信支付v3

    Spring Boot項(xiàng)目中集成微信支付v3

    這篇文章主要介紹了Spring Boot項(xiàng)目中集成微信支付v3,幫助大家更好的理解和使用spring boot框架,感興趣的朋友可以了解下
    2021-01-01
  • 基于ArrayList源碼解析(基于JDK1.8)

    基于ArrayList源碼解析(基于JDK1.8)

    這篇文章主要介紹了關(guān)于ArrayList源碼解析(基于JDK1.8),具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • java中實(shí)現(xiàn)excel合并單元格詳細(xì)代碼實(shí)例

    java中實(shí)現(xiàn)excel合并單元格詳細(xì)代碼實(shí)例

    最近的工作中,遇到一個(gè)需求在生成的Excel表格后需要在尾部添加一個(gè)合并的單元格數(shù)據(jù),這篇文章主要給大家介紹了關(guān)于java中實(shí)現(xiàn)excel合并單元格的相關(guān)資料,需要的朋友可以參考下
    2024-06-06
  • 多個(gè)springboot項(xiàng)目如何使用一個(gè)外部共同的application.yml

    多個(gè)springboot項(xiàng)目如何使用一個(gè)外部共同的application.yml

    這篇文章主要介紹了多個(gè)springboot項(xiàng)目如何使用一個(gè)外部共同的application.yml問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • Java Swing JList列表框的實(shí)現(xiàn)

    Java Swing JList列表框的實(shí)現(xiàn)

    這篇文章主要介紹了Java Swing JList列表框的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12
  • 詳解Java中的三種流程控制語句

    詳解Java中的三種流程控制語句

    這篇文章主要介紹了Java中常用的三種流程控制語句的使用,文中講解非常細(xì)致,代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2022-04-04
  • Java模擬并解決緩存穿透問題

    Java模擬并解決緩存穿透問題

    這篇文章主要介紹了Java模擬并解決緩存穿透問題,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值 ,需要的朋友可以參考下
    2019-08-08
  • Springboot訪問templates html頁面過程詳解

    Springboot訪問templates html頁面過程詳解

    這篇文章主要介紹了Springboot訪問templates html頁面過程詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-05-05

最新評論

平塘县| 彭山县| 通州区| 大关县| 布尔津县| 霍邱县| 溆浦县| 溆浦县| 渑池县| 绥滨县| 龙里县| 宿松县| 灵寿县| 那曲县| 右玉县| 信宜市| 安庆市| 北流市| 延川县| 鄂托克前旗| 宁强县| 文山县| 突泉县| 新乡县| 甘南县| 长乐市| 大悟县| 泸州市| 民乐县| 孝义市| 武川县| 六盘水市| 临高县| 镇远县| 进贤县| 义乌市| 三门峡市| 西乌珠穆沁旗| 乌什县| 平乐县| 法库县|