【问题标题】:Java, how to replace some characters in StringJava,如何替换字符串中的某些字符
【发布时间】:2012-03-30 16:08:38
【问题描述】:

我有一个数组,可以为我保存字符串格式的 URL 地址。 在加载 URL 之前,我需要确保字符串中没有空格。 我写了这段代码,但是 ReplaceAll() 并没有改变任何东西。

请告诉我这里出了什么问题?

public NewsFeedItemList getNewsList() {
        String str;

        for(int i=0; i<newsFeedItemList.getImage().size(); i++){
            str = newsFeedItemList.getImage().get(i);
            Log.i("before>>>", str);
            str.replaceAll(" ", "%20");
            Log.i("after<<<<", str);
            newsFeedItemList.getImage().set(i, str);
        }

        return newsFeedItemList;
    }

【问题讨论】:

  • 实际上,当我测试我的 android 应用程序时,它崩溃了。当我检查日志时,它向我显示其中一个 url 是这样的:“mania.com.my/Portals/1/hazama_news20(1).jpg”当我将其放入浏览器时,浏览器将其更改为“mania.com.my/Portals/1/hazama_news%20(1).jpg”。我把上面的代码放在我的应用程序的某个地方,但什么都不会改变。
  • 建议不要使用replace方法,使用str = URLEncoder.encode(str)

标签: android string url replace


【解决方案1】:

建议不要使用replace方法,

使用str = URLEncoder.encode(str)

有时不仅空格而且有另一个需要改变的字符。

【讨论】:

    【解决方案2】:

    正如其他发帖者所说:字符串是不可变的,因此您必须将replaceAll 的返回值分配给字符串。

    作为一个提示:你应该看看java.net.URLEncoderhttp://docs.oracle.com/javase/1.5.0/docs/api/java/net/URLEncoder.html

    这个类帮助你以正确的方式格式化 url,并且可以处理各种特殊字符——不仅仅是空格。

    【讨论】:

      【解决方案3】:

      用下面的代码更新了你的代码,

      公共 NewsFeedItemList getNewsList() { 字符串str;

          for(int i=0; i<newsFeedItemList.getImage().size(); i++){
              str = newsFeedItemList.getImage().get(i);
              Log.i("before>>>", str);
              str = str.replaceAll(" ", "%20");  // I have update here
              Log.i("after<<<<", str);
              newsFeedItemList.getImage().set(i, str);
          }
      
          return newsFeedItemList;
      }
      

      【讨论】:

        【解决方案4】:

        你只需要换行

        str.replaceAll(" ", "%20");
        

        str=str.replaceAll(" ", "%20");
        

        【讨论】:

          【解决方案5】:

          String 是不可变的,因此您需要像这样将其分配回去:str = str.replaceAll(" ", "%20");

          【讨论】:

            【解决方案6】:

            字符串是不可变的,这意味着您不能更改字符串对象的内容。你需要做的是类似

            String cleanedString = str.replaceAll(" ", "%20");
            

            replaceAll()-方法返回新字符串。

            【讨论】:

              猜你喜欢
              • 2020-01-23
              • 2023-03-04
              • 2013-07-09
              • 2018-08-23
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多