我将尝试在
下面是我的
以下是我的方法,可以转换错误信息。
以下是预期输出: 对于 errorMessage1 它工作得很好
errorMessage
中查找来自messages.properties
的字符串,如果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
我的errorMessage
可能是左侧字符串中的任何一个,我需要用右侧字符串值替换它。
以下是一些示例错误消息:
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中是否可以进一步简化?
(inv_start_date|invoice
。 - tobias_kMap<String,String>
而不是文件。在Java 8中,这个方法能进一步简化吗? - OTUser