1

親愛なるstackoverflowのメンバー、私は小さな問題を抱えています.

文字列の一部の文字をJavaの他の文字に置き換えたいのですが、それを行うコードは次のとおりです。

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         

jComboBox1.removeAllItems();
String str =  new GenericResource_JerseyClient().getlist();
    String [] temp = null;
    temp = str.split(",");
     temp[1]=temp[1].replaceAll("'", "");
    temp[1]=temp[1].replaceAll(" ", "");
    temp[1]=temp[1].replace("[", "");
    temp[1]=temp[1].replace("]", "");

     for(int i =0; i < temp.length ; i++)
     {
         jComboBox1.addItem(temp[i]);
     }        // TODO add your handling code here:      // TODO add your handling code here:
                // TODO add your handling code here
    }  

上記のコードからわかるように、「'」、「[」、「]」、および空のスペースを何も置き換えません。コードからもわかるように、文字列を 2 つに分割しました。の後の string の部分ではコードは正常に動作しますが、 の前の string の部分では、コードが正しく動作していないようです。クライアント側のドロップダウンリスト出力のコピーも添付しました。

文字列から [ と ' を削除する方法について、どんな助けでも大歓迎です。

乾杯。[ と ' を使用したクライアント側の出力

4

5 に答える 5

4

-でのみ置換を実行していますがtemp[1]、問題はドロップダウンに表示される最初の項目にあるようです。これはおそらくからのデータですtemp[0]

削除コードを別のメソッドに抽出し、ループで呼び出す必要があると思います。

for(int i =0; i < temp.length ; i++)
{
    jComboBox1.addItem(removeUnwantedCharacters(temp[i]));
}

さらに、正規表現のパターンマッチングを明示的に望まない場合ではなく、を使用することを強くお勧めします。次のようなコードがあると、非常に混乱する可能性があります。replacereplaceAll

foo = foo.replaceAll(".", "");

これはドットを削除しているように見えますが、実際には「。」としてすべての文字を削除します。正規表現として扱われます...

于 2012-05-08T08:55:46.600 に答える
4

文字列を分割する前に、すべての置換を実行してください。これは、同じコードをループで実行するよりも優れています。

例えば:

String cleanString = str.replace("'", "").replace(" ", "").replace("[", "").replace("]", "");
String[] temp = cleanString.split(",");
for(int i = 0; i < temp.length ; i++) {
    jComboBox1.addItem(temp[i]);
} 
于 2012-05-08T09:10:45.003 に答える
1

さて、インデックス 1 の項目 (2 番目の項目) でのみ置換を実行します。しかし、それらすべて (実際には 2 つ) をコンボに追加します。試す:

for(int i =0; i < temp.length ; i++){
    temp[i]=temp[i].replaceAll("'", "");
    temp[i]=temp[i].replaceAll(" ", "");
    temp[i]=temp[i].replace("[", "");
    temp[i]=temp[i].replace("]", "");
}
于 2012-05-08T08:57:11.250 に答える
1

よくある問題。 このコードはあなたの要件を満たしていると
思います。

于 2012-05-08T08:57:50.410 に答える
1

文字列の 2 番目の部分である temp[1] でのみ置換を行っています。temp[0] でも行う必要があります。文字列を受け取って置換を行い、temp[0] と temp[1] の両方で呼び出す関数を作成することをお勧めします。一度に 1 つずつではなく、正規表現を使用してすべての文字を一度に置き換えることもできます。

String [] temp = String.split(",")

for (int i = 0;i<temp.length;i++) {
   temp[i] = replaceSpecialChars(temp[i]);
}

public String replaceSpecialChars(String input) {
// add your replacement logic here
return input
}
于 2012-05-08T09:00:02.653 に答える