亲爱的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
}
从上面的代码可以看出,我将“'”,“[”,“]”和空格替换为空。 从代码中也可以看出我将字符串分成两部分。在字符串后面的部分,代码运行良好,但字符串的部分之前,代码似乎不能正常工作。 我还附上了客户端下拉列表输出的副本。
如何从字符串中删除[和'
,将非常感谢任何帮助干杯。
答案 0 :(得分:4)
您只是在temp[1]
上执行替换 - 而问题似乎出现在下拉列表中显示的 first 项目中,这可能是来自temp[0]
的数据。
我怀疑你应该将删除代码提取到一个单独的方法中,并在循环中调用它:
for(int i =0; i < temp.length ; i++)
{
jComboBox1.addItem(removeUnwantedCharacters(temp[i]));
}
此外,我强烈建议您使用replace
而不是replaceAll
,以便不明确要求正则表达式模式匹配。拥有如下代码可能会非常令人困惑:
foo = foo.replaceAll(".", "");
看起来就像删除点一样,但实际删除所有字符,如“。”被视为正则表达式......
答案 1 :(得分:4)
在拆分字符串之前执行所有替换。这比在循环中执行相同的代码要好。
例如:
String cleanString = str.replace("'", "").replace(" ", "").replace("[", "").replace("]", "");
String[] temp = cleanString.split(",");
for(int i = 0; i < temp.length ; i++) {
jComboBox1.addItem(temp[i]);
}
答案 2 :(得分: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("]", "");
}
答案 3 :(得分:1)
常见问题。
我认为this代码符合您的要求。
答案 4 :(得分: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
}