从此响应中提取数据的最佳方式是什么?
从银行我收到这个回应,当客户做一个交易时,我需要grep从这个回应的数据。我怎样才能做到这一点..?从此响应中提取数据的最佳方式是什么?
银行响应格式:
{ReceiptNo}证实。上{TRANSACTIONTIME:d}在{TRANSACTIONTIME:吨}{金额}从{1stFor2ndPartyName}{PHONENO}接收。帐号{}账户号码新实用余额为{} SecondPartyBalance
在大胆的字符串会由实际值取代,格式将不会改变。
样本响应:
111111确认。 2011-11-11 14:30 10从ABCF 收到457878984545.账户号码24554455122的新工具余额为1000
我与它挣扎。
我会使用一个正则表达式 - 见 http://docs.oracle.com/javase/tutorial/essential/regex/和 http://www.vogella.de/articles/JavaRegularExpressions/article.html。 。
字符串图案=“/(\ d +)证实\上(\ d {4} - \ d {1,2} - \ d {1,2}) 在([\ d \:] + )(\ d +)....“;
然后用$ 1,$ 2,$ 3 ..你ReceiptNo等。
所以,你会最终
Pattern regex = Pattern.compile(pattern);
Matcher match = regex.matcher(yourString);
if (!match.matches())
return some error;
String receiptNumber = match.group(1);
String transactionOn = m.group(2);
....
return above
就像下面的解决方案2。请阅读http://docs.oracle.com/javase/tutorial/essential/regex/和http://www.vogella.de/articles/JavaRegularExpressions/article.html。
似乎更好的解决方案,请你多解释..? –
您可以使用拆分: 如果无法更改格式,则使用拆分会更快。
String tokens ="111111 Confirmed. on 2011-11-11 at 14:30 10 received from ABCF 457878984545. Account Number 24554455122 New Utility balance is 1000".trim().split(" ");
String receiptNo = tokens[0];
...
Pattern p = Pattern.compile("(.+) Confirmed\\. on (.+) at (.+) (.+) received from (.+) (.+)\\. Account Number (.+) New Utility balance is (.+)");
Matcher m = p.matcher(anInput);
if (m.matches()) {
String receiptNo = m.group(1);
String transactionDate = m.group(2);
String transactionTime = m.group(3);
...
String secondPartyBalance = m.group(8);
} else {
throw new RuntimeException("Bank report in wrong format");
}
,WHYT(你尝试过什么?) – Mansuro