我有一个棘手的情况,似乎不起作用。对于给定的字符串,"Hi [HandleKey], you have [Action]"
和包含的映射,map<"HandleKey","Peter">
如果在映射中找到键,我想替换方括号和其中的单词。在这种情况下,映射不包含键 Action。字符串应该返回"Hi Peter, you have [Action]"
。
这是我正在处理的代码:
private String messageFormatter(String tMessage, Map<String, String> messageMap)
{
String formattedMsg = null;
Set<String> keyset = messageMap.keySet();
Iterator<String> keySetItr = keyset.iterator();
String msgkey = null;
boolean isFormatted = false;
while (keySetItr.hasNext())
{
msgkey = keySetItr.next();
if(t.contains(msgkey))
{
if(!isFormatted)
{
formattedMsg = tMessage.replaceAll("\\[", "").replaceAll("\\]", "");
formattedMsg = formattedMsg.replaceAll(msgkey, messageMap.get(msgkey));
isFormatted= true;
}else
{
formattedMsg = formattedMsg.replaceAll(msgkey, messageMap.get(msgkey));;
}
}else
{
formattedMsg=tMessage;
}
}
return formattedMsg;
}
最后一个else部分是不对的。谁能帮我解决这个问题。此代码适用于所有情况,除非在地图中找不到匹配的键