Рассмотрим следующую строку:
String str = "XFB_PART~\XFB_IDF~\XFB_MODE~0\XFB_LOCALITEM~\XFB_REMOTEITEM~\XFB_MSG~tool\ soundgarden~\ASYNCHRONOUS~0\BROADCAST~0\XFB_LOCALAGT~"
Я хотел бы заменить все обратные косые черты между XFB_MSG
и ASYNCHRONOUS
запятыми (поэтому каждый раз, когда вы видите обратную косую черту sh, замените его запятой).
Вот что я сделал:
stringBuffer = new StringBuffer(str);
for (int i = stringBuffer.indexOf("XFB_MSG"); i<stringBuffer.indexOf("ASYNCHRONOUS"); i++){
if(stringBuffer.charAt(i)=='\\'){
stringBuffer = stringBuffer.replace(i, i, ",");
}
}
Проблема в том, что при выполнении условия if (stringBuffer.charAt(i)=='\\')
компилятор продолжает вводить и заменять символ, даже когда я меняю значение, и в результате я получаю бесконечное число l oop с постоянно вставляемыми запятыми:
XFB_PART~\XFB_IDF~\XFB_MODE~0\XFB_LOCALITEM~\XFB_REMOTEITEM~\XFB_MSG~tool,,,,,,,,\ soundgarden~\ASYNCHRONOUS~0\BROADCAST~0\XFB_LOCALAGT~
Еще раз, цель состоит в том, чтобы заменить только обратную косую черту между XFB_MSG
и ASYNCHRONOUS
и оставшуюся часть строки нетронутой. Позиции могут меняться, как и значения между этими двумя параметрами. Поэтому я должен искать их таким образом и пытаться найти способ заменить обратные слеши между ними запятыми.
Любая идея, почему у меня бесконечное число l oop, и если у вас есть лучший способ сделать это, пожалуйста, не стесняйтесь, дайте мне знать.
Спасибо.