3

私が持っているのは、私が読んでいる.csvファイルから作成している文字列配列です。次に、'文字に使用する値を解析し、これをjavascriptファイルに出力しているため、\'に置き換えます。

そのために使用しているコードは次のとおりです。

while ((thisLine = myInput.readLine()) != null) {
        String[] line = thisLine.split("\t");                       
            if(line[4].indexOf("'") > -1){
                System.out.println(line[4]);
                line[4] = line[4].replace("'", "\'");
                System.out.println(line[4]);
            }               
            brand.add(line[4]);         
}

ただし、これは機能していません。置換を行った後、同じ文字列が返されます。

これは文字列配列の問題が原因ですか?

この件に関してご協力いただければ幸いです。

4

4 に答える 4

9

このようにしてみてください:

line[4] = line[4].replace("'", "\\'");

バックスラッシュは「エスケープ」する必要があります。

line[4] = line[4].replace("'", "\'");パーツ\'がちょうどに変換される場合'

于 2013-02-21T15:53:38.480 に答える
6

あなたは"'"と同じであるという事実に反抗してい"\'"ます。それらは同じ文字列です(単一の文字、単なるアポストロフィ)-エスケープは、の文字​​リテラルを許可するためにあり'\''ます。

あなたが欲しい:

line[4] = line[4].replace("'", "\\'");

つまり、アポストロフィではなく、バックスラッシュをエスケープしていることになります。つまり、アポストロフィをバックスラッシュ、次にアポストロフィに置き換えます。これは、必要なものです。

文字および文字列リテラルでのエスケープの詳細については、JLSセクション3.10.6を参照してください。

于 2013-02-21T15:53:55.813 に答える
1

スラッシュ\このようなものを追加する必要があります

line[4] = line[4].replace("'", "\\'");

1つの左スラッシュ\がエスケープ文字であるため

于 2013-02-21T15:55:40.047 に答える
0

あなたの問題は脱出の問題のようです。\\を試して、1つの円記号を置き換えます。

于 2013-02-21T15:54:50.350 に答える