cloudroam
6 天以前 0cf0870889d65f5d11d0b2c8af7bca9442a7ba19
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
package com.example.firstapp.entity
 
import java.time.LocalDateTime
 
class Rule(
    val type: String,
    val content: String,
    val pattern: String
) {
    // 添加伴生对象存储多个正则表达式模式
    companion object {
        private val BANK_PATTERNS = mapOf(
            "招商银行" to listOf(
                // 第一种格式:账单¥xxx,还款日MM月dd日
                "账单[¥¥](\\d+\\.?\\d*).*还款日(\\d{2})月(\\d{2})日",
                // 第二种格式:账单金额xxx,还款日MM月dd日
                "账单金额[::](\\d+\\.?\\d*).*还款日[::](\\d{2})月(\\d{2})日",
                // 可以继续添加其他格式...
            ),
            "中国银行" to listOf(
                "账单金额[::](\\d+\\.?\\d*).*还款日[::](\\d{1,2})日",
                // 可以添加其他格式...
            ),
            // 其他银行的模式...
        )
    }
 
    fun extractCodeFromMessage(message: String): String? {
        if (type == "财务") {
            // 获取该银行的所有正则表达式模式
            val patterns = BANK_PATTERNS[content] ?: listOf(pattern)
 
            // 尝试每一个正则表达式
            for (pat in patterns) {
                val regex = pat.toRegex()
                val matchResult = regex.find(message)
 
                matchResult?.let {
                    if (it.groupValues.size > 1) {
                        return it.groupValues[1].replace("[¥¥]".toRegex(), "")
                    }
                }
            }
            return null
        } else {
            // 非财务类型的处理保持不变
            val regex = pattern.toRegex()
            val matchResult = regex.find(message)
            return matchResult?.value
        }
    }
 
    fun extractDueDate(message: String): String? {
        if (type != "财务") return null
 
        val patterns = BANK_PATTERNS[content] ?: listOf(pattern)
 
        for (pat in patterns) {
            val regex = pat.toRegex()
            val matchResult = regex.find(message)
 
            matchResult?.let {
                when {
                    content == "招商银行" && it.groupValues.size > 3 -> {
                        return "${it.groupValues[2]}月${it.groupValues[3]}日"
                    }
                    it.groupValues.size > 2 -> {
                        return it.groupValues[2] + "日"
                    }
 
                    else -> {}
                }
            }
        }
        return null
    }
}