我有一个字符串字段,格式为:
"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 是上面定义的字符串):
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;