0

ファイル内のJavaScriptを置き換えるためにJavaを使用する必要があります。私が取っている手順は基本的に次のようなものです。

  1. ファイルを読み込みます(別のシステムから生成されたJavaScriptを含む.aspファイルです)
  2. 不要なJavaScript関数を必要なものに置き換えます
  3. 最初に生成されたファイルに書き戻します

私のコードはreplaceAllメソッドでおかしくなりそうなので、ステップ2で問題が発生しています。このメソッドを置き換えたいとしましょう:

function sayHi() {
    alert('hi');
}

...このようなもので:

function sayHi() {
    alert("Hello, World!");
}

私は次のようなコードを持っています:

private static final String REPLACEMENT_METHOD =
        "function sayHi() {\n" +
        "   alert('Hello, World!');\n" +
        "}";

private static final String METHOD_TO_REPLACE =
        "function sayHi() {\n" +
        "   alert('hi');\n" +
        "}";

String content = // Get the contents from the file...

content = content.replaceAll(METHOD_TO_REPLACE, REPLACEMENT_METHOD);

私が遭遇している問題は、置き換えたい文字列が正規表現として解釈されていることです(これは単なるリテラルテキストですが、もちろん、正規表現として解釈されます)。残念ながら、特殊文字を適切にエスケープし、それでも希望どおりに一致させるための正しい構文を見つけることができませんでした。

何か案は?

ありがとう!

4

3 に答える 3

3

一致パターンの前後に引用演算子を使用できます。

private static final String METHOD_TO_REPLACE =
    "\\Q" +
    "function sayHi() {\n" +
    "   alert('hi');\n" +
    "}" +
    "\\E";

ところで、

function sayHi() {
    alert("Hello, World!");
}

Javaでは機能しません。あなたはおそらく欲しい:

void sayHi() {
    alert("Hello, World!");
}
于 2012-10-11T21:25:18.767 に答える
1

メソッドreplaceAllは、実際に最初のパラメーターをパターンとして使用します。

したがって、次の解決策があります。

  1. パターンを手動でエスケープします。私が見る限り、あなたの場合はそれほど難しくありません。
  2. これをプログラムで実行してみてくださいPattern.quote()
  3. String.replace()の代わりにループで使用しますreplaceAll()。メソッドreplace()はプレーンストリングで機能します。
于 2012-10-11T21:28:23.460 に答える
0

バックスラッシュを試しました\か?

于 2012-10-11T21:21:22.870 に答える