【问题标题】:Replacing a character with other in java在java中用其他字符替换字符
【发布时间】:2012-05-08 08:52:51
【问题描述】:

尊敬的 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 部分,代码似乎无法正常工作。 我还附上了客户端下拉列表输出的副本。

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

干杯。

【问题讨论】:

    标签: java replace character


    【解决方案1】:

    在拆分字符串之前执行所有替换。这比在循环中执行相同的代码要好。

    例如:

    String cleanString = str.replace("'", "").replace(" ", "").replace("[", "").replace("]", "");
    String[] temp = cleanString.split(",");
    for(int i = 0; i < temp.length ; i++) {
        jComboBox1.addItem(temp[i]);
    } 
    

    【讨论】:

      【解决方案2】:

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

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

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

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

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

      其中 看起来 会删除点,但会实际上删除所有字符,如“.”被视为正则表达式...

      【讨论】:

      • 当我看到你的名字时,我本能地去投票按钮:D。
      【解决方案3】:

      好吧,您只在索引为 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("]", "");
      }
      

      【讨论】:

        【解决方案4】:

        您只是在字符串的第二部分 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
        }
        

        【讨论】:

          【解决方案5】:

          常见问题。
          我认为this 代码符合您的要求。

          【讨论】:

          • @Kishorepandey:我看不出这实际上是如何解决您的问题的,即您只修复了 一个 字符串,而不是所有字符串。
          • @jon skeet 我尝试了 dogbane 的方法,首先替换字符,然后拆分它们,它起作用了。
          • @Kishorepandey:那你为什么接受这个的回答而不是dogbane的?
          • @jon skeet 对不起,我不知道,我现在改了!!谢谢提醒!!
          猜你喜欢
          • 1970-01-01
          • 2014-06-04
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-01-02
          相关资源
          最近更新 更多