私はうまくいかないように見えるトリッキーな状態を持っています。指定された文字列 、"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部分が正しくありません。誰でもこれで私を助けてくれませんか。このコードは、一致するキーがマップに見つからない場合を除いて、すべてのケースで正常に機能します