簡體   English   中英

Java拆分包含管道和換行符的字符串

[英]Java Split string containing pipe and new line characters

我試圖拆分下面的字符串並放入地圖 - 下面的數據可能是單行或多行。 我想在地圖中啟動鍵名時避免使用“\\ n”

    user.Split-A=1|
    user.Split-B=1|
    user.Data-C=532|

但是使用\\ nuser.Split-A = 1,\\ nuser.Split-B = 1,\\ nuser.Data-C = 532和\\ n創建地圖

這是代碼 -

        Map valueMap = new HashMap<String, String>();
//Splitting string containing pipe
        for (String string : spHeader.split("\\|")) { 
            String[] mapPair = string.split("=");
            valueMap.put(mapPair[0], mapPair[1]);
        }

請檢查是否可以這樣做。

一個簡單的解決方法是調用String#trim()

valueMap.put(mapPair[0].trim(), mapPair[1].trim());

當然,可以使用更好的正則表達式,甚至不會在匹配的字符串中捕獲EOL

您可以使用此正則表達式來匹配由=分隔的鍵和值,而不捕獲| \\n=

([^=|\s]+)=([^=|\s]+)

RegEx演示

您可以嘗試使用正則表達式:

\|\n?

例如:

private static final Pattern REGEX_PATTERN = 
        Pattern.compile("\\|\\n?");

public static void main(String[] args) {
    String input = "user.Split-A=1|\nuser.Split-B=1|\nuser.Data-C=532|\n";

    System.out.println(java.util.Arrays.toString(
        REGEX_PATTERN.split(input)
    )); // prints "[user.Split-A=1, user.Split-B=1, user.Data-C=532]"

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM