首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Java 無 String.Split(String[], ...) 方法:手工實現多分隔符分割工具類

     編輯:程式設計綜合問答

背景

C# String.Split(string[], StringSplitOptions) 支持字符串數組作為多重分隔符。Java String.split(String regex) 僅支持正則表達式單一模式。

解決方案:封裝工具方法


public class StringUtils {
    /** 多字符串分隔符分割,自動轉義特殊字符 */
    public static String[] split(String str, String[] delimiters) {
        if (str == null || delimiters == null || delimiters.length == 0) {
            return new String[]{str};
        }
        StringBuilder regex = new StringBuilder();
        for (int i = 0; i < delimiters.length; i++) {
            if (i > 0) regex.append('|');
            regex.append(Pattern.quote(delimiters[i])); // 自動轉義正則元字符
        }
        return str.split(regex.toString());
    }
    
    /** 支持 StringSplitOptions.RemoveEmptyEntries */
    public static String[] split(String str, String[] delimiters, boolean removeEmpty) {
        String[] parts = split(str, delimiters);
        if (!removeEmpty) return parts;
        return Arrays.stream(parts).filter(s -> !s.isEmpty()).toArray(String[]::new);
    }
}

使用示例


String[] seps = {"<<", ">>", "##"};
String text = "A<>C##D";
String[] tokens = StringUtils.split(text, seps, true);
// 結果: ["A", "B", "C", "D"]

最佳回答

沒有就自己寫個…………

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved