假设我在java中有这个字符串数组
String[] test={"hahaha lol","jeng jeng jeng","stack overflow"}
但是现在我想将上面数组中字符串中的所有空格替换为%20,使其像这样
String[] test={"hahaha%20lol","jeng%20jeng%20jeng","stack%20overflow"}
我该怎么做?
答案 0 :(得分:7)
迭代数组并用编码版本替换每个条目。
就像这样,假设您实际上只是在寻找与URL兼容的字符串:
for (int index =0; index < test.length; index++){
test[index] = URLEncoder.encode(test[index], "UTF-8");
}
要符合当前的Java,您必须指定编码 - 但是,它应始终为UTF-8
。
如果您想要更通用的版本,请执行其他人的建议:
for (int index =0; index < test.length; index++){
test[index] = test[index].replace(" ", "%20");
}
答案 1 :(得分:3)
尝试使用String#relaceAll(regex,replacement)
;未经测试,但这应该有效:
for (int i=0; i<test.length; i++) {
test[i] = test[i].replaceAll(" ", "%20");
}
答案 2 :(得分:2)
这是一个简单的解决方案:
for (int i=0; i < test.length; i++) {
test[i] = test[i].replaceAll(" ", "%20");
}
但是,看起来你正试图逃避这些字符串以便在URL中使用,在这种情况下,我建议你找一个为你做这个的库。
答案 3 :(得分:1)
对于每个String,您将执行replaceAll(“\\ s”,“%20”)
答案 4 :(得分:1)
String[] test={"hahaha lol","jeng jeng jeng","stack overflow"};
for (int i=0;i<test.length;i++) {
test[i]=test[i].replaceAll(" ", "%20");
}
答案 5 :(得分:0)
答案 6 :(得分:0)
您可以改用 IntStream
。代码可能如下所示:
String[] test = {"hahaha lol", "jeng jeng jeng", "stack overflow"};
IntStream.range(0, test.length).forEach(i ->
// replace non-empty sequences
// of whitespace characters
test[i] = test[i].replaceAll("\\s+", "%20"));
System.out.println(Arrays.toString(test));
// [hahaha%20lol, jeng%20jeng%20jeng, stack%20overflow]