usingSplitMethod ( String text, int n )" />

一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

代碼字符串分割方法

科技綠洲 ? 來源:了不起 ? 作者:了不起 ? 2023-09-25 11:42 ? 次閱讀

我們寫代碼的時(shí)候,經(jīng)常會(huì)遇到這樣一個(gè)場景,那就是分割字符串。比如說把一個(gè)字符串分成N個(gè),或者說按照N個(gè)字符分割。

我們今天就來看看怎么每隔N個(gè)字符分割字符串。首先我們就使用 JDK 中內(nèi)置的 String#split 來分割。

使用 String#split 方法

String 類中 split 方法,是我們平常處理字符串分割最常用的方法之一,它可以根據(jù)給定的分隔符或正則表達(dá)式將一個(gè)字符串分割成多個(gè)部分。

我們來看個(gè)例子:

public static List< String > usingSplitMethod(String text, int n) {
    String[] results = text.split("(?<=G.{" + n + "})");

    return Arrays.asList(results);
}

我們通過使用正則表達(dá)式 "(?<=G.{" + n + "})"來分割字符串,其中表達(dá)式中的 n 表示字符的長度。

我們可以通過以下測試用例代碼驗(yàn)證這個(gè)正則是否有效。

public class SplitStringEveryNthCharUnitTest {

    public static final String TEXT = "abcdefgh123456";

    @Test
    public void givenString_whenUsingSplit_thenSplit() {
        List< String > results = SplitStringEveryNthChar.usingSplitMethod(TEXT, 3);

        assertThat(results, contains("abc", "def", "gh1", "234", "56"));
    }
}

使用 String#substring 方法

String#substring 一般情況我們都是用于截取字符串使用的,這里我們也是可以用來處理字符串的分割,只要循環(huán)就行。

public static List< String > usingSubstringMethod(String text, int n) {
    List< String > results = new ArrayList<  >();
    int length = text.length();

    for (int i = 0; i < length; i += n) {
        results.add(text.substring(i, Math.min(length, i + n)));
    }

    return results;
}

我們通過以下測試用例代碼來驗(yàn)證。

@Test
public void givenString_whenUsingSubstring_thenSplit() {
    List< String > results = SplitStringEveryNthChar.usingSubstringMethod("abcdefgh123456", 4);

    assertThat(results, contains("abcd", "efgh", "1234", "56"));
}

使用 Pattern

Pattern 類通常來說,我們是用于處理正則表達(dá)式,做一些match使用,正如第一種 String#split 方法所見,正則表達(dá)式也可以用于分割字符串。這里就展示一下,使用Pattern類來處理字符串分割。

public static List< String > usingPattern(String text, int n) {
    return Pattern.compile(".{1," + n + "}")
        .matcher(text)
        .results()
        .map(MatchResult::group)
        .collect(Collectors.toList());
}

我們使用 .{1,n}構(gòu)建了一個(gè) Pattern 對(duì)象,它能個(gè)匹配 1 到 n 個(gè)字符, 使用下面的測試用例簡單測試一下

@Test
public void givenString_whenUsingPattern_thenSplit() {
    List< String > results = SplitStringEveryNthChar.usingPattern("abcdefgh123456", 5);

    assertThat(results, contains("abcde", "fgh12", "3456"));
}

使用 Guava

到現(xiàn)在為止,我們已經(jīng)學(xué)了幾種通過 JDK 相關(guān) API 完成這個(gè)操作的方法,下面我們來看看怎么使用 Guava 來實(shí)現(xiàn)這個(gè)小功能。

public static List< String > usingGuava(String text, int n) {
    Iterable< String > parts = Splitter.fixedLength(n).split(text);

    return ImmutableList.copyOf(parts);
}

Guava 通過 Splitter 類可以很簡單的針對(duì)我們的這個(gè)使用場景,進(jìn)行字符串分割。這個(gè) fixedLength() 方法為后續(xù)的分割提供了固定的分割長度。

我們通過下面的測試用例來測試一下。

@Test
public void givenString_whenUsingGuava_thenSplit() {
    List< String > results = SplitStringEveryNthChar.usingGuava("abcdefgh123456", 6);

    assertThat(results, contains("abcdef", "gh1234", "56"));
}

總結(jié)

字符串分割在我們工作中很常用,但大部分情況我們只會(huì)使用 String#split , 看到其他的一些情況,是不是感覺有點(diǎn)有趣,沒想到字符串分割還能這樣玩。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • API
    API
    +關(guān)注

    關(guān)注

    2

    文章

    1554

    瀏覽量

    63287
  • 字符串
    +關(guān)注

    關(guān)注

    1

    文章

    589

    瀏覽量

    20991
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4880

    瀏覽量

    69998
  • JDK
    JDK
    +關(guān)注

    關(guān)注

    0

    文章

    82

    瀏覽量

    16775
  • string
    +關(guān)注

    關(guān)注

    0

    文章

    40

    瀏覽量

    4840
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    如何在bash中分割字符串

    假設(shè)我們有一個(gè)由逗號(hào)或者下劃線隔開的多個(gè)單詞組成的字符串,需要拆分這個(gè)字符串提取各個(gè)單詞。
    發(fā)表于 12-07 17:10 ?3918次閱讀

    字符串字符串數(shù)組實(shí)現(xiàn)對(duì)漢字的分割

    輸入字符串,輸出字符串數(shù)組,實(shí)現(xiàn)對(duì)漢字的分割.
    發(fā)表于 12-23 14:09

    字符串與ASCII碼字符串的相互轉(zhuǎn)換

    本帖最后由 貓仔靜2019 于 2022-8-24 10:05 編輯 字符串與ASCII碼字符串的相互轉(zhuǎn)換
    發(fā)表于 08-24 10:00

    怎么從4mb磁盤保存/加載html代碼字符串?

    一直無法做到這一點(diǎn)。我在網(wǎng)上看到的教程是針對(duì)單行字符串執(zhí)行此操作的,而我的 html 代碼顯然是多行字符串。我怎么可能從 4mb 磁盤保存/加載 html 代碼字符串?
    發(fā)表于 02-28 08:28

    字符串移位包含的問題解決方案

    問題:給定字符串s和t,判斷是否字符串t能通過將s移位后的字符串所包含。 方法一 最簡單的方法就是將s進(jìn)行循環(huán)移位,再判斷移位后的
    發(fā)表于 11-29 10:05 ?1122次閱讀

    新手必知的Python:分割字符串的步驟及源代碼

    若你使用過 Shell 中的 awk 工具,會(huì)發(fā)現(xiàn)用它來分割字符串是非常方便的。特別是多個(gè)連續(xù)空格會(huì)被當(dāng)做一個(gè)處理。
    的頭像 發(fā)表于 08-25 10:48 ?2299次閱讀
    新手必知的Python:<b class='flag-5'>分割</b><b class='flag-5'>字符串</b>的步驟及源<b class='flag-5'>代碼</b>

    什么是復(fù)制字符串?Python如何復(fù)制字符串

    。 在上一篇文章《你真的知道Python的字符串怎么用嗎?》里,我突發(fā)奇想,將字符串跟列表做了比較,然后發(fā)現(xiàn)字符串竟然沒有復(fù)制的方法。當(dāng)時(shí)沒有細(xì)想,只說要擱置疑問。過后,有好學(xué)的小伙伴
    發(fā)表于 11-25 10:32 ?3126次閱讀

    平化字符串處理方法簡介

    這里介紹一組有用的字符串處理方法,即平化至字符串和從字符串還原。
    的頭像 發(fā)表于 09-26 10:20 ?2482次閱讀

    python字符串有哪些特定方法

    python字符串序列操作也適用于列表和元組。 python字符串還有獨(dú)有方法,即字符串對(duì)象的函數(shù),其他對(duì)象不可調(diào)用,只有字符串對(duì)象可
    的頭像 發(fā)表于 02-23 15:02 ?859次閱讀

    字符串的相關(guān)知識(shí)

    TCL 中的數(shù)據(jù)類型只有一種:字符串。這些字符串可以是字母、數(shù)字、布爾值、標(biāo)點(diǎn)符號(hào)等特殊字符的組合。在某些特殊命令的作用下,字符串可以向其他數(shù)據(jù)類型轉(zhuǎn)換。下面將系統(tǒng)的講解或回顧下
    的頭像 發(fā)表于 03-29 11:41 ?1294次閱讀

    Python中檢查字符串包含的方法

    Python 有多種處理字符串方法。今天我們介紹如何檢查一個(gè)字符串中是否包含另一個(gè)字符串。
    的頭像 發(fā)表于 05-14 16:02 ?1.6w次閱讀

    oracle字符串split成多個(gè)

    Oracle是一種廣泛使用的關(guān)系型數(shù)據(jù)庫管理系統(tǒng),它提供了許多強(qiáng)大的功能和函數(shù),用于處理和操作數(shù)據(jù)。其中之一就是字符串分割(split)方法,該方法用于將一個(gè)
    的頭像 發(fā)表于 12-06 09:54 ?5914次閱讀

    labview字符串如何轉(zhuǎn)換為16進(jìn)制字符串

    在LabVIEW中,將字符串轉(zhuǎn)換為16進(jìn)制字符串是一個(gè)常見的需求,尤其是在處理數(shù)據(jù)通信和硬件接口時(shí)。LabVIEW提供了多種方法來實(shí)現(xiàn)這一轉(zhuǎn)換,包括使用內(nèi)置函數(shù)、編寫VI(Virtual
    的頭像 發(fā)表于 09-04 15:54 ?4219次閱讀

    字符串處理方法 字符串轉(zhuǎn)數(shù)字的實(shí)現(xiàn)

    在編程中,將字符串轉(zhuǎn)換為數(shù)字是一個(gè)常見的需求。不同的編程語言有不同的方法來實(shí)現(xiàn)這一功能。以下是一些常見編程語言中的字符串轉(zhuǎn)數(shù)字的實(shí)現(xiàn)方法: Python 在Python中,可以使用內(nèi)置
    的頭像 發(fā)表于 01-07 15:26 ?631次閱讀

    字符串反轉(zhuǎn)的實(shí)現(xiàn)方式

    在編程中,字符串反轉(zhuǎn)是一個(gè)基礎(chǔ)而重要的操作,它涉及到將一個(gè)字符串中的字符順序顛倒過來。這個(gè)操作在多種編程語言中都有不同的實(shí)現(xiàn)方式,本文將探討幾種常見的字符串反轉(zhuǎn)
    的頭像 發(fā)表于 01-07 15:27 ?594次閱讀