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

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

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

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

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

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

使用

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

| 没有特别的char。

但是,如果您使用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); } } 

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

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

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

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

根据http://docs.oracle.com/javase/6/docs/api/java/lang/String.html,replace replace()接受char而不是String 。 也许你应该尝试使用replaceAll(String, String)代替? 要么是这样,要么尝试将String( "" )引号更改为char( '' )引号。

编辑:我刚注意到带有CharSequence replace()的重载。 我还是会尝试replaceAll()

我不记得它是如何工作的那种方法……但你可以自己制作:

 String withTwoPipes = "helloTwo||pipes"; for(int i=0; i 

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

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