string java 匹配_Java 8查找并替换匹配的字符串

我试图从找到字符串messages.properties中的errorMessage,如果errorMessage有串,我需要用相应的值来代替它

我有messages.properties如下

inv_date=INVOICE DATE

inv_id=INVOICE NUMBER

cl_id=CLIENT ID

lf_matter_id=LAW FIRM MATTER ID

inv_total_net_due=INVOICE TOTAL

(inv_start_date|invoice start date)=BILLING START DATE

(inv_end_date|invoice end date)=BILLING END DATE

inv_desc=INVOICE DESCRIPTION

units=LINE ITEM NUMBER OF UNITS

discount_amount=LINE ITEM ADJUSTMENT AMOUNT

total_amount=LINE ITEM TOTAL

(charge_date|charge date)= LINE ITEM DATE

acca_task=LINE ITEM TASK CODE

acca_expense=LINE ITEM EXPENSE CODE

acca_activity= LINE ITEM ACTIVITY CODE

(tk_id|time keeper id)=TIMEKEEPER ID

charge_desc=LINE ITEM DESCRIPTION

lf_id=LAW FIRM ID

(BaseRate|Rate|tk_rate)=LINE ITEM UNIT COST

tk_level=TIMEKEEPER CLASSIFICATION

cl_matter_id=CLIENT MATTER ID

我errorMesage可以使用任何(左侧)字符串,我需要将其替换为右侧字符串值

以下是几个示例错误消息

String errorMesage1 = "Line 3 : Could not parse inv_date value"

String errorMesage2 = "Line : 1 BaseRate is a required field"

下面是我的方法转换错误消息

public static String toUserFriendlyErrorMessage(String message) {

ResourceBundle rb = ResourceBundle.getBundle("messages");

for(String key : rb.keySet()){

String header = rb.getString(key);

if(message.contains(key)) {

return message.replaceAll(key, rb.getString(key));

}

}

return message;

}

以下是预期的输出:对于errorMessage1,它工作正常

System.out.println(toUserFriendlyErrorMessage(errorMessage1)); ==> Line 3 : Could not parse INVOICE DATE value

但是对于errorMessage2它不起作用。它不会替换BaseRate为LINE ITEM UNIT COST

System.out.println(toUserFriendlyErrorMessage(errorMessage2)); ==> Line : 1 BaseRate is a required field

有没有办法找到多个字符串的出现并将其替换为其对应的值?

例如:查找(BaseRate|Rate|tk_rate)并替换为LINE ITEM UNIT COST

也想知道这种方法可以在Java 8中进一步简化吗?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值