-1
以下で強調表示されている値を、明示的に読み取られる値で置き換えるにはどうすればよいでしょうか?文字列の値を明示的に読み取る値に置き換える必要があります
String msg ="BGM+EFD:20:109:GBP+aa:bb:cc+5+dd'CST++KindOfDeclaration+0'";
つまり、サーバーから値を読み取る必要があります。それは正しく読んでいますが、それは前の値を置き換えています。109
たとえば、読み込んでいる値が56の場合は、109を1056に置き換えます。私は
String msg ="BGM+EFD:20:109:GBP+aa:bb:cc+5+dd'CST++KindOfDeclaration+0'";
String bgm=msg.split("\\'") [0];
String tempMessage=bgm;
String messageFunction="56";
System.out.println(bgm);
if(StringUtils.isNotEmpty(messageFunction)){
bgm=bgm.replace(bgm.split("\\+")[3],messageFunction);
}
else{
bgm=bgm.replace(bgm.split("\\+")[3],"9");
}
msg=msg.replace(tempMessage, bgm);
必要な出力以下のようなコードを与えている
BGM+EFD:20:109:GBP+aa:bb:cc+56+dd'CST++KindOfDeclaration+0'";
あるしかし、あなたの実際のコードが動作しているとして、私は(
BGM+EFD:20:1056:GBP+aa:bb:cc+56+dd'CST++KindOfDeclaration+0'";
あなたが望むものの[mcve]を提供してください。これは不明です。あなたのロジックはあまり意味がありません。また、そのような仕事のためにRegexをチェックする必要があります。私の出力は、BGM + EFD:20:109:GBP + aa:bb:cc + 56 + dd'CST ++ KindOfDeclaration + 0 'のように表示されます。 – AxelH
提供されたコードは正常に動作しています。あなたは[ここ](https://ideone.com/ZRpj46)の例を見ることができます。 _Since 'StringUtils'はJava SEにはないので、example_では使用されていません。また、IDEでオフラインでチェックすることもできます。問題はあなたのコードの他の部分にあるようです。 – cse
どうして 'msg.replace(" 5 "、" 56 ")' –