0

次の形式の文字列フィールドが 1 つあります。

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

したがって、それらはいくつかで区切られていません。または、空白一つでも区切られていません。

実行ステータスの値を取得して、フィールドに入力したいですか? これを達成する方法は?

手伝ってくれてありがとう

4

5 に答える 5

3

これは機能します。しかし、これが最適かどうかはわかりません。問題を解決するだけです。

    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");
              }
        }
    }
于 2012-05-22T07:36:47.197 に答える
2

かどうかを確認してくださいcontains() ExecutionStatus=

はいの場合、文字列を次のように分割しますExecutionStatus=

array次に、数字以外の文字の最初の出現を見つけてから2番目の文字列を取得し、使用しますsubstring()

于 2012-05-22T07:21:20.887 に答える
2

あなたの例では、それらは実際に空白で区切られていますが、以下も空白なしで機能するはずです。あなたの文字列が格納されていると仮定します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();
    }
}
于 2012-05-22T07:32:12.410 に答える
1

文字列にすべての空白が存在すると仮定すると、これは機能します。

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) {
    }
}
于 2012-05-22T07:45:40.513 に答える
1

「…そして今、あなたには2つの問題があります!」コメント、これはおそらく正規表現で行うのが最も簡単です(strは上記で定義された文字列です):

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;
于 2012-05-22T08:31:12.350 に答える