黄色网址大全免费-黄色网址你懂得-黄色网址你懂的-黄色网址有那些-免费超爽视频-免费大片黄国产在线观看

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 學習攻略 Java學習 計算Java字符串中的空格

計算Java字符串中的空格

更新時間:2022-05-24 10:52:37 來源:動力節點 瀏覽4171次

1. 概述

當我們使用 Java 字符串時,有時我們想計算一個字符串中有多少個空格。

有多種方法可以得到結果。在這個快速教程中,我們將通過示例了解如何完成它。

2. 示例輸入字符串

首先,讓我們準備一個輸入字符串作為示例:

String INPUT_STRING = "  This string has nine spaces and a Tab:'	'";

上面的字符串包含九個空格和一個用單引號括起來的制表符。我們的目標是只計算給定輸入字符串中的空格字符。

因此,我們的預期結果是:

int EXPECTED_COUNT = 9;

接下來,讓我們探索各種解決方案以獲得正確的結果。

我們將首先使用 Java 標準庫來解決問題,然后我們將使用一些流行的外部庫來解決它。

最后,在本教程中,我們將介紹單元測試方法中的所有解決方案。

3.使用Java標準庫

(1)經典解決方案:循環和計數

這可能是解決問題的最直接的想法。

我們遍歷輸入字符串中的所有字符。此外,我們維護一個計數器變量,并在看到空格字符后遞增計數器。

最后,我們將獲得字符串中空格的數量:

@Test
void givenString_whenCountSpaceByLooping_thenReturnsExpectedCount() {
    int spaceCount = 0;
    for (char c : INPUT_STRING.toCharArray()) {
        if (c == ' ') {
            spaceCount++;
        }
    }
    assertThat(spaceCount).isEqualTo(EXPECTED_COUNT);
}

(2)使用 Java 8 的 Stream API

Stream API從 Java 8 開始就已經存在。

此外,從 Java 9 開始,String類中添加了一個新的chars()方法,用于將char值從String轉換為IntStream實例。

如果我們使用 Java 9 或更高版本,我們可以將這兩個功能結合起來以單行方式解決問題:

@Test
void givenString_whenCountSpaceByJava8StreamFilter_thenReturnsExpectedCount() {
    long spaceCount = INPUT_STRING.chars().filter(c -> c == (int) ' ').count();
    assertThat(spaceCount).isEqualTo(EXPECTED_COUNT);
}

(3)使用正則表達式的Matcher.find()方法

到目前為止,我們已經看到了通過搜索給定字符串中的空格字符來計數的解決方案。我們使用了character == ' ' 來檢查一個字符是否是一個空格字符。

正則表達式(Regex)是搜索字符串的另一個有力武器,Java 對 Regex 有很好的支持。

因此,我們可以將單個空格定義為模式,并使用Matcher.find()方法檢查是否在輸入字符串中找到了該模式。

此外,為了獲得空格數,每次找到模式時我們都會增加一個計數器:

@Test
void givenString_whenCountSpaceByRegexMatcher_thenReturnsExpectedCount() {
    Pattern pattern = Pattern.compile(" ");
    Matcher matcher = pattern.matcher(INPUT_STRING);
    int spaceCount = 0;
    while (matcher.find()) {
        spaceCount++;
    }
    assertThat(spaceCount).isEqualTo(EXPECTED_COUNT);
}

(4)使用String.replaceAll()方法

使用Matcher.find()方法搜索和查找空格非常簡單。但是,由于我們談論的是正則表達式,因此還有其他快速計算空格的方法。

我們知道我們可以使用String.replaceAll()方法進行“搜索和替換”。

因此,如果我們將輸入字符串中的所有非空格字符替換為空字符串,則輸入中的所有空格都將是結果。

所以,如果我們想得到計數,結果字符串的長度就是答案。接下來,讓我們嘗試一下這個想法:

@Test
void givenString_whenCountSpaceByReplaceAll_thenReturnsExpectedCount() {
    int spaceCount = INPUT_STRING.replaceAll("[^ ]", "").length();
    assertThat(spaceCount).isEqualTo(EXPECTED_COUNT);
}

如上面的代碼所示,我們只有一行來獲取計數。

值得一提的是,在String.replaceAll()調用中,我們使用了模式“[^ ]”而不是“\\S”。 這是因為我們想替換非空格字符而不僅僅是非空格字符。

(5)使用String.split() 方法

我們已經看到使用String.replaceAll()方法的解決方案簡潔緊湊。現在,讓我們看看解決問題的另一個想法:使用String.split()方法。

眾所周知,我們可以將一個模式傳遞給String.split()方法,并獲得一個由該模式拆分的字符串數組。

因此,我們的想法是,我們可以將輸入字符串拆分為一個空格。然后,原始字符串中的空格數將比字符串數組長度少一。

現在,讓我們看看這個想法是否有效:

@Test
void givenString_whenCountSpaceBySplit_thenReturnsExpectedCount() {
    int spaceCount = INPUT_STRING.split(" ").length - 1;
    assertThat(spaceCount).isEqualTo(EXPECTED_COUNT);
}

4. 使用外部庫

Apache Commons Lang 3庫廣泛用于 Java 項目。此外,Spring是 Java 愛好者中流行的框架。

這兩個庫都提供了一個方便的字符串實用程序類。

現在,讓我們看看如何使用這些庫計算輸入字符串中的空格。

(1)使用 Apache Commons Lang 3 庫

Apache Commons Lang 3 庫提供了一個StringUtil類,其中包含許多方便的與字符串相關的方法。

要計算字符串中的空格,我們可以使用此類中的countMatches()方法。

在我們開始使用StringUtil類之前,我們應該檢查該庫是否在類路徑中。我們可以在pom.xml中添加最新版本的依賴項:

<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-lang3</artifactId>
    <version>3.12.0</version>
</dependency>

現在,讓我們創建一個單元測試來展示如何使用這個方法:

@Test
void givenString_whenCountSpaceUsingApacheCommons_thenReturnsExpectedCount() {
    int spaceCount = StringUtils.countMatches(INPUT_STRING, " ");
    assertThat(spaceCount).isEqualTo(EXPECTED_COUNT);
}

(2)使用Spring

如今,很多 Java 項目都是基于 Spring 框架的。因此,如果我們使用 Spring,Spring 提供的一個不錯的字符串實用程序已經可以使用:StringUtils。

是的,它與 Apache Commons Lang 3 中的類同名。此外,它提供了一個countOccurrencesOf()方法來計算字符串中字符的出現次數。

這正是我們正在尋找的:

@Test
void givenString_whenCountSpaceUsingSpring_thenReturnsExpectedCount() {
    int spaceCount = StringUtils.countOccurrencesOf(INPUT_STRING, " ");
    assertThat(spaceCount).isEqualTo(EXPECTED_COUNT);
}

 

提交申請后,顧問老師會電話與您溝通安排學習

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 国产你懂的在线观看 | 一个人在线观看免费视频www | 成人动漫视频观看免费 | 小毛片在线观看 | 婷婷午夜影院 | 免费播放欧美一级特黄 | 欧美成亚洲 | 国产精品成人免费综合 | 男女做www免费高清视频 | 久久99久久99精品免观看麻豆 | 成人免费一区二区三区 | 中文字幕第一页在线视频 | 99久久丝袜腿交 | 国产亚洲欧美在线观看的 | 真实一级一级一片免费视频 | 国产精品人成在线播放新网站 | 一级做a爰片鸭王 | 最好看的毛片 | a级毛片免费观看在线播放 a级毛片免费完整视频 | 动漫成年美女黄漫网站国产 | 伊人精品综合 | 成人欧美一区二区三区视频不卡 | 日韩草逼| 一个人看的在线www视频 | 天天插天天摸 | 日日天天 | 怡红院视频在线观看最新 | 黄色国产免费观看 | 波多野结衣中文字幕在线视频 | 三级伦理片高清在线观看播放 | 一本大道香蕉最新在线视频 | 日韩在线视频线视频免费网站 | 五月综合激情网 | 天天操夜夜操免费视频 | 能在线观看的一区二区三区 | 欧美成人怡春院在线激情 | 亚洲欧美综合乱码精品成人网 | 精品视频在线视频 | 韩剧伦理在线观看 | 日韩欧美高清一区 | 在线观看黄网址 |