簡體   English   中英

如何使用JAVA從字符串中獲取一個子字符串的特定值?

[英]How to get with JAVA a specific value for one substring from string?

我有一個字符串字段,其格式為:

"TransactionID=30000001197169 ExecutionStatus=6
        additionalCurrency=KMK
    pin= 0000"

所以他們沒有被分開; оr,即使有一個空格也不會分開。

我想獲取執行狀態的值並將其放在某個字段中嗎? 如何實現呢?

感謝幫助

這可行。 但是我不確定這是否是最佳選擇,它只是可以解決您的問題。

    String s = "TransactionID=30000001197169ExecutionStatus=6additionalCurrency=KMKpin=0000";
    if(s!=null && s.contains("ExecutionStatus="))
    {
        String s1[] = s.split("ExecutionStatus=");
        if(s1!=null &&  s1.length>1)
        {
            String line = s1[1];
            String pattern = "[0-9]+";

              // Create a Pattern object
              Pattern r = Pattern.compile(pattern);

              // Now create matcher object.
              Matcher m = r.matcher(line);
              if (m.find( )) {
                 System.out.println("Match");
                 System.out.println("Found value: " + m.group(0) );

              } else {
                 System.out.println("NO MATCH");
              }
        }
    }

檢查它是否contains() ExecutionStatus=

如果是,則使用ExecutionStatus=拆分字符串

現在從array獲取第二個字符串,找到第一個出現的非數字字符,並使用substring()

在您的示例中,它們確實由空格分隔,但是以下內容也應在沒有空格的情況下工作。 假設您的字符串存儲在String arguments

String executionStatus;
String[] anArray = arguments.split("=");
for (int i; i < anArray.length; i++)
    if (anArray[i].contains("ExecutionStatus")){
        executionStatus = anArray[++i].replace("additionalCurrency","");
        executionStatus = executionStatus.trim();
    }
}

假設字符串中存在所有空格,則此方法有效。

String str = "\"TransactionID=30000001197169 ExecutionStatus=6\n" +
        "        additionalCurrency=\"KMK\"\n" +
        "    pin= \"0000\"\"";
int start = str.indexOf("ExecutionStatus=") + "ExecutionStatus=".length();
int status = 0;

if (start >= 0) {
    String strStatus = str.substring(start, str.indexOf("additionalCurrency=") - 1);
    try {
        status = Integer.parseInt(strStatus.trim());
    } catch (NumberFormatException e) {
    }
}

冒着吸引“……現在您有兩個問題!”的風險! 注釋,這可能是使用正則表達式最簡單的方法(str是上面定義的String):

Pattern p = Pattern.compile("ExecutionStatus\\s*=\\s*(\\d+)"); // Whitespace matching around equals for safety, capturing group around the digits of the status)
Matcher m = p.matcher(str);
String status = m.find() ? m.group(1) : null;

暫無
暫無

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

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