java替换字符串数组中的某些字符串

时间:2012-01-25 15:28:39

标签: java android

假设我在java中有这个字符串数组

String[] test={"hahaha lol","jeng jeng jeng","stack overflow"}

但是现在我想将上面数组中字符串中的所有空格替换为%20,使其像这样

String[] test={"hahaha%20lol","jeng%20jeng%20jeng","stack%20overflow"}

我该怎么做?

7 个答案:

答案 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)

直接退出Java文档...... String java docs

你可以做String.replace('toreplace','replacement')。

使用for循环遍历数组的每个成员。

答案 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]

另见:How to replace a whole string with another in an array