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
|
}
|
}
|