如何更换|| (两个管道)来自带有|的字符串(一)管道

时间:2011-11-29 10:39:57

标签: java string

我在这个标签中得到了json格式的一些图像的响应:

  

“xmlImageIds”:“57948916 || 57948917 || 57948918 || 57948919 || 57948920 || 57948921 || 57948 922 || 57948923 || 57948924 || 57948925 || 57948926 || 5794892”

我想要做的是使用字符串类的.split(“||”)分隔每个图像ID。然后使用此图像ID附加url并显示它。

我试过.replace("\"|\"|","\"|");,但它不适合我。请帮忙。

编辑:Shabbir,我试图根据您的评论更新您的问题。如果我没弄错,请再次编辑。

5 个答案:

答案 0 :(得分:14)

使用

.replace("||", "|");

|不是特殊的字符。

但是,如果您使用的是split()replaceAll而不是replace(),请注意您需要将管道符号转义为\\|,因为这些方法需要使用正则表达式作为参数。

例如:

public static void main(String[] args) {
    String in = "\"xmlImageIds\":\"57948916||57948917||57948918||57948919||57948920||57948921||57948‌922||57948923||57948924||57948925||57948926||5794892\"".replace("||", "|");

    String[] q = in.split("\"");
    String[] ids = q[3].split("\\|");
    for (String id : ids) {
        System.out.println("http://test/" + id);
    }
}

答案 1 :(得分:3)

我想我知道你的问题是什么。您需要指定replace()的结果,而不仅仅是调用它。

String s = "foo||bar||baz";
s = s.replace("||", "|");
System.out.println(s);

我测试了它,只是调用s.replace("||", "|");似乎没有修改字符串;您必须将结果分配回s

编辑:Java 6规范说“返回一个新字符串,因为用newChar替换了这个字符串中所有出现的oldChar。” (重点是我的)。

答案 2 :(得分:1)

根据http://docs.oracle.com/javase/6/docs/api/java/lang/String.htmlreplace()需要char而不是String。也许你应该试试replaceAll(String, String)?或者,或尝试将您的String("")引号更改为char('')引号。

编辑:我刚注意到replace()的重载需要CharSequence。我仍然会尝试replaceAll()

答案 3 :(得分:0)

    String pipe="pipes||";
    System.out.println("Old Pipe:::"+pipe);
    System.out.println("Updated Pipe:::"+pipe.replace("||", "|"));

答案 4 :(得分:0)

我不记得它是如何运作的...但你可以自己制作:

String withTwoPipes = "helloTwo||pipes";
   for(int i=0; i<withTwoPipes.lenght;i++){
      char a = withTwoPipes.charAt(i);
      if(a=='|' && i<withTwoPipes.lenght+1){
         char b = withTwoPipes.charAt(i+1);
         if(b=='|' && i<withTwoPipes.lenght){
           withTwoPipes.charAt(i)='';
           withTwoPipes.charAt(i+1)='|';
         }
      }
   }

我认为像这样的代码应该有用......它不是一个完美的答案,但可以帮助...