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

Java中字符串分割常見的方法總結(jié)大全

 更新時間:2025年07月17日 08:26:02   作者:1010n111  
這篇文章主要介紹了Java中字符串分割方法的相關(guān)資料,Java字符串分割方法涵蓋split()、正則表達式、Stream及第三方庫,文中通過代碼介紹的非常詳細,需要的朋友可以參考下

技術(shù)背景

在Java編程中,經(jīng)常需要對字符串進行分割操作,例如將一個包含多個信息的字符串按照特定的分隔符拆分成多個子字符串。常見的應(yīng)用場景包括解析CSV文件、處理網(wǎng)絡(luò)請求參數(shù)等。

實現(xiàn)步驟

1. 使用String#split()方法

String#split()方法是最常用的字符串分割方法,它接受一個正則表達式作為分隔符。

String string = "004-034556";
String[] parts = string.split("-");
String part1 = parts[0]; // 004
String part2 = parts[1]; // 034556

2. 處理特殊字符分隔符

由于split()方法的參數(shù)是正則表達式,對于一些特殊字符(如.、|等),需要進行轉(zhuǎn)義。

String string = "004.034556";
// 使用轉(zhuǎn)義字符
String[] parts1 = string.split("\\."); 
// 使用字符類
String[] parts2 = string.split("[.]"); 
// 使用Pattern.quote()方法
String[] parts3 = string.split(Pattern.quote(".")); 

3. 檢查字符串是否包含分隔符

在分割之前,可以使用String#contains()方法檢查字符串是否包含特定的分隔符。

String string = "004-034556";
if (string.contains("-")) {
    String[] parts = string.split("-");
} else {
    throw new IllegalArgumentException("String " + string + " does not contain -");
}

4. 保留分割字符

可以使用正則表達式的正向前瞻和正向后顧來保留分割字符。

// 分割字符在左邊
String string1 = "004-034556";
String[] parts1 = string1.split("(?<=-)"); 
String part11 = parts1[0]; // 004-
String part12 = parts1[1]; // 034556

// 分割字符在右邊
String string2 = "004-034556";
String[] parts2 = string2.split("(?=-)"); 
String part21 = parts2[0]; // 004
String part22 = parts2[1]; // -034556

5. 限制分割結(jié)果數(shù)量

可以通過split()方法的第二個參數(shù)限制分割結(jié)果的數(shù)量。

String string = "004-034556-42";
String[] parts = string.split("-", 2);
String part1 = parts[0]; // 004
String part2 = parts[1]; // 034556-42

6. 使用正則表達式捕獲組

可以使用正則表達式的捕獲組來實現(xiàn)更復雜的分割和約束。

import java.util.regex.Pattern;
import java.util.regex.Matcher;

class SplitExample {
    private static Pattern twopart = Pattern.compile("(\\d+)-(\\d+)");

    public static void checkString(String s) {
        Matcher m = twopart.matcher(s);
        if (m.matches()) {
            System.out.println(s + " matches; first part is " + m.group(1) +
                               ", second part is " + m.group(2) + ".");
        } else {
            System.out.println(s + " does not match.");
        }
    }

    public static void main(String[] args) {
        checkString("123-4567");
        checkString("foo-bar");
        checkString("123-");
        checkString("-4567");
        checkString("123-4567-890");
    }
}

7. Java 8 Stream方式

在Java 8及以上版本中,可以使用Pattern.compile().splitAsStream()方法將分割結(jié)果轉(zhuǎn)換為流。

import java.util.List;
import java.util.regex.Pattern;
import java.util.stream.Collectors;

List<String> stringList = Pattern.compile("-")
        .splitAsStream("004-034556")
        .collect(Collectors.toList());
stringList.forEach(s -> System.out.println(s));

8. 使用StringTokenizer類(不推薦)

StringTokenizer是一個遺留類,不建議在新代碼中使用,但它仍然可以用于字符串分割。

import java.util.StringTokenizer;

StringTokenizer strTkn = new StringTokenizer("004-034556", "-");
while (strTkn.hasMoreTokens()) {
    System.out.println(strTkn.nextToken());
}

9. 使用Apache Commons Lang庫

Apache Commons Lang庫提供了StringUtils.split()方法,使用起來更加方便。

import org.apache.commons.lang.StringUtils;

String str = "004-034556";
String[] split = StringUtils.split(str, "-");

10. 使用Google Guava庫

Google Guava庫的Splitter類允許鏈式調(diào)用不同的字符串操作。

import com.google.common.base.Splitter;
import java.util.List;

String string = "004-034556";
List<String> result = Splitter.on('-')
        .trimResults()
        .omitEmptyStrings()
        .splitToList(string);

核心代碼

以下是一個綜合示例,展示了不同的字符串分割方法:

import java.util.Arrays;
import java.util.List;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
import org.apache.commons.lang.StringUtils;
import com.google.common.base.Splitter;

public class StringSplitExample {
    public static void main(String[] args) {
        String string = "004-034556";

        // 使用String#split()方法
        String[] parts1 = string.split("-");
        System.out.println(Arrays.toString(parts1));

        // 使用Java 8 Stream方式
        List<String> parts2 = Pattern.compile("-")
                .splitAsStream(string)
                .collect(Collectors.toList());
        System.out.println(parts2);

        // 使用Apache Commons Lang庫
        String[] parts3 = StringUtils.split(string, "-");
        System.out.println(Arrays.toString(parts3));

        // 使用Google Guava庫
        List<String> parts4 = Splitter.on('-')
                .trimResults()
                .omitEmptyStrings()
                .splitToList(string);
        System.out.println(parts4);
    }
}

最佳實踐

  • 性能考慮:如果分割的字符串數(shù)量較多,或者需要頻繁進行分割操作,建議使用Pattern.compile()方法預(yù)編譯正則表達式,以提高性能。
  • 異常處理:在使用split()方法時,要注意數(shù)組越界異常,特別是在不確定分割結(jié)果數(shù)量的情況下。
  • 代碼可讀性:選擇合適的分割方法,使代碼更易讀和維護。例如,對于簡單的單字符分隔符,使用String#split()方法即可;對于復雜的分割需求,可以考慮使用正則表達式捕獲組。

常見問題

1. 特殊字符分隔符問題

split()方法的參數(shù)是正則表達式,對于一些特殊字符(如.|等),需要進行轉(zhuǎn)義。否則,這些字符會被解釋為正則表達式的元字符,導致分割結(jié)果不符合預(yù)期。

2. 空字符串問題

在某些情況下,分割結(jié)果可能包含空字符串??梢允褂?code>trimResults()和omitEmptyStrings()方法來處理空字符串。

3. StringTokenizer類的使用問題

StringTokenizer是一個遺留類,不建議在新代碼中使用。它的功能相對有限,而且不支持正則表達式。

總結(jié)

到此這篇關(guān)于Java中字符串分割常見方法的文章就介紹到這了,更多相關(guān)Java字符串分割內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 基于java實現(xiàn)斗地主代碼實例解析

    基于java實現(xiàn)斗地主代碼實例解析

    這篇文章主要介紹了基于java實現(xiàn)斗地主代碼實例解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-07-07
  • java實戰(zhàn)之桌球小游戲

    java實戰(zhàn)之桌球小游戲

    這篇文章主要為大家詳細介紹了java實戰(zhàn)之桌球小游戲,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-07-07
  • springcloud feign docker上無法通訊的問題及解決

    springcloud feign docker上無法通訊的問題及解決

    這篇文章主要介紹了springcloud feign docker上無法通訊的問題及解決,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • SpringBoot集成WebSocket實現(xiàn)后臺向前端推送信息

    SpringBoot集成WebSocket實現(xiàn)后臺向前端推送信息

    在一次項目開發(fā)中,使用到了Netty網(wǎng)絡(luò)應(yīng)用框架,以及MQTT進行消息數(shù)據(jù)的收發(fā),這其中需要后臺來將獲取到的消息主動推送給前端,所以本文記錄了SpringBoot集成WebSocket實現(xiàn)后臺向前端推送信息的操作,需要的朋友可以參考下
    2024-02-02
  • java 使用過濾器實現(xiàn)登錄攔截處理

    java 使用過濾器實現(xiàn)登錄攔截處理

    這篇文章主要介紹了java 使用過濾器實現(xiàn)登錄攔截處理方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • Java中幾種常用數(shù)據(jù)庫連接池的使用

    Java中幾種常用數(shù)據(jù)庫連接池的使用

    數(shù)據(jù)庫連接池在編寫應(yīng)用服務(wù)是經(jīng)常需要用到的模塊,太過頻繁的連接數(shù)據(jù)庫對服務(wù)性能來講是一個瓶頸,使用緩沖池技術(shù)可以來消除這個瓶頸,本文就來介紹Java常見的幾種,感興趣的可以了解一下
    2021-05-05
  • Java 對稱加密幾種算法分別實現(xiàn)

    Java 對稱加密幾種算法分別實現(xiàn)

    這篇文章主要介紹了Java 對稱加密使用DES / 3DES / AES 這三種算法分別實現(xiàn)的相關(guān)資料,這里提供了實例代碼,需要的朋友可以參考下
    2017-01-01
  • 如何解決創(chuàng)建maven工程時,產(chǎn)生“找不到插件的錯誤”問題

    如何解決創(chuàng)建maven工程時,產(chǎn)生“找不到插件的錯誤”問題

    這篇文章主要介紹了如何解決創(chuàng)建maven工程時,產(chǎn)生“找不到插件的錯誤”問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • SpringBoot如何實現(xiàn)word文檔轉(zhuǎn)pdf

    SpringBoot如何實現(xiàn)word文檔轉(zhuǎn)pdf

    這篇文章主要介紹了SpringBoot如何實現(xiàn)word文檔轉(zhuǎn)pdf,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • mybatis如何使用truncate清空表

    mybatis如何使用truncate清空表

    這篇文章主要介紹了mybatis如何使用truncate清空表,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-03-03

最新評論

陇川县| 师宗县| 大足县| 盐池县| 贺兰县| 湘潭市| 建德市| 平远县| 宁远县| 修武县| 玉林市| 泊头市| 镇远县| 大悟县| 新丰县| 盱眙县| 德清县| 通道| 中阳县| 馆陶县| 游戏| 青浦区| 泊头市| 嘉黎县| 眉山市| 固镇县| 晋中市| 绵阳市| 行唐县| 郸城县| 历史| 永兴县| 玉溪市| 浦东新区| 绥化市| 忻城县| 镇宁| 横峰县| 文化| 潞城市| 泰州市|