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
    }  

从上面的代码可以看出,我将“'”,“[”,”]”和空白替换为空。从代码中也可以看出,我将字符串一分为二。在 string after 部分,代码运行良好,但 string before 部分,代码似乎无法正常工作。我还附上了客户端下拉列表输出的副本。

关于如何从字符串中删除 [ 和 ' 的任何帮助将不胜感激。

干杯。带有 [ 和 ' 的客户端输出

4

5 回答 5

4

您只是在执行替换temp[1]- 而问题似乎出现在下拉列表中显示的第一项中,这可能是来自temp[0].

我怀疑您应该将删除代码提取到一个单独的方法中,然后在循环中调用它:

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

此外,我强烈建议您使用replace而不是在您明确需要正则表达式模式匹配replaceAll的任何情况下使用。拥有以下代码可能会非常混乱:

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(第二个)的项目中执行替换。但随后将它们全部添加到组合中(实际上是两个)。尝试:

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

您只是在字符串的第二部分 temp[1] 上进行替换。你也需要在 temp[0] 中做。最好创建一个函数,该函数接受一个字符串并进行替换,并在 temp[0] 和 temp[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 回答