我在这个标签中得到了json格式的一些图像的响应:
“xmlImageIds”:“57948916 || 57948917 || 57948918 || 57948919 || 57948920 || 57948921 || 57948 922 || 57948923 || 57948924 || 57948925 || 57948926 || 5794892”
我想要做的是使用字符串类的.split(“||”)分隔每个图像ID。然后使用此图像ID附加url并显示它。
我试过.replace("\"|\"|","\"|");
,但它不适合我。请帮忙。
答案 0 :(得分:14)
使用
.replace("||", "|");
|
不是特殊的字符。
但是,如果您使用的是split()
或replaceAll
而不是replace()
,请注意您需要将管道符号转义为\\|
,因为这些方法需要使用正则表达式作为参数。
例如:
public static void main(String[] args) {
String in = "\"xmlImageIds\":\"57948916||57948917||57948918||57948919||57948920||57948921||57948922||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.html,replace()
需要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)='|';
}
}
}
我认为像这样的代码应该有用......它不是一个完美的答案,但可以帮助...