我正在开发一个 Android 应用程序,该应用程序汇总从金融服务提供商发送给客户的短信,每次用户进行交易时都会发送一条短信作为通知。 这是一条示例消息
[-ZAAD SHILLING-] Ref:1141125019 SLSH4,000 sent to AXMED XASAN WARSAME(634458520) at 12/05/19 22:33:03, Your Balance is SLSH44,222.62.
所以我想提取此消息的几个部分,例如
引用号:1141125019
发送金额:SLSH4,000
收件人姓名:AXMED XASAN WARSAME
收件人电话:634458520
日期:2019 年 12 月 5 日
时间:22:33:03
余额:SLSH44,222.62
我已经让文本消息显示在 ListView 中,我现在想要自定义它,我不想显示整个消息,我只想显示上面提到的部分。
这是示例代码
if (Data.contains("Ref:")){
String[] Tx = Data.split("Ref:");
String TxID = Tx[1];
}
最佳答案
使用正则表达式(regex)可能最好地解决这个问题
正则表达式允许您根据模式匹配字符串,并从字符串中提取信息。
public static void main(String[] args) {
String data = "( [-ZAAD SHILLING-] Ref:1141125019 SLSH4,000 sent to AXMED XASAN WARSAME(634458520) at 12/05/19 22:33:03, Your Balance is SLSH44,222.62. )";
String headerReg = "\\[-([a-zA-Z\\s]+?)-]";
String refReg = "Ref:([0-9]+)";
String amountReg = "([,.\\w]+)";
String nameReg = "([\\w\\s]+?)";
String accountReg = "\\([0-9]+\\)";
String dateReg = "([0-9]{2}/[0-9]{2}/[0-9]{2})";
String timeReg = "([0-9]{2}:[0-9]{2}:[0-9]{2})";
String balanceReg = "([,.\\w]+?)";
String finalReg = "\\( " + headerReg + " " + refReg + " " + amountReg + " sent to " + nameReg + accountReg + " at " + dateReg + " " + timeReg + ", Your Balance is " + balanceReg + ". \\)";
Pattern pattern = Pattern.compile(finalReg);
Matcher matcher = pattern.matcher(data);
if (matcher.find()) {
MatchResult result = matcher.toMatchResult();
int groups = result.groupCount();
for (int i = 0; i < groups; i++) {
System.out.println(result.group(i + 1));
}
}
}
使用它,我们可以从您的输入字符串中找到相关数据。
关于java - 如何将字符串拆分为多个部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56762654/