0
public String ReplaceCline(String laddr) {
    if(text.contains("c="))
    {
    int a = text.length();



    for(int i=0;i<a;i++)
    {
          int var1 = text.indexOf("IP4", i);
          var1 = var1+ 4;
          int var2 = var1+15;

          text = text.replace(text.substring(var1, var2),laddr );

          i = var2;
    }

    }
    return text;
}

範囲外のエラーをスローするインデックス。

テキストの「c =」行にあるデバイスから送信されたテキストの IP アドレスを置き換える必要があります。

4

4 に答える 4

1

正規表現を使用してテキストを置き換えることができます。

Pattern regex = Pattern.compile("c=IN IP4 (?:\\d{1,3}\\.){3}\\d{1,3}");
Matcher matcher = regex.matcher(text);
if (matcher.find()) {
text = matcher.replaceAll(
        "c=IN IP4 "+laddr);
}

編集: これは、IN アドレスの前に常に IP4 があり、アドレスが実際に IP4 アドレスであることを前提としています。IP6 との互換性のために、RegEx を拡張する必要があります。

于 2013-09-10T09:35:35.253 に答える
0

範囲外のインデックスは次のものから取得する必要があります。

text = text.replace(text.substring(var1, var2),laddr );

なぜなら:

int var1 = text.indexOf("IP4", i);
var1 = var1+ 4;
int var2 = var1+15; 

その場合、var1 と var2 は i よりも大きくなければなりません。これは、text.length() を超える可能性があります。

その部分が役立つはずであることを再確認してください。

于 2013-09-10T09:31:02.260 に答える
0

StringUtils.subStringBetween を試す

 StringUtils.substringBetween(input, "c=IN IP4 ", " ");

出力:172.24.150.61

于 2013-09-10T09:36:44.400 に答える