java - 如何将字符串拆分为多个部分

标签 java android

我正在开发一个 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/

相关文章:

java - 如何使用 MediaPlayer 开始 Activity

java - Android SwitchCompat 拇指未对齐

java - 调用对话框 : Not work on API 10

java - 让线程相互等待。

android - 多个 Activity ,相同的 onCreateOptionsMenu、onOptionsItemSelected 和 onKeyDown。我能以某种方式重用代码吗?

java - 如何将第 3 方库添加到 Android AOSP 构建中?

linux - 单线程 Java 应用程序启动超过 70 个线程

android - 如何为我的 ListView 中的 ListContents 设置不同的语言

android - 列表项宽度与对话框内的父级不匹配

java - 非静态 setGravity 不能从静态上下文中引用