替换字符串数组中的某个字符串

Posted

技术标签:

【中文标题】替换字符串数组中的某个字符串【英文标题】:Replace certain string in array of strings 【发布时间】:2012-02-18 18:55:56 【问题描述】:

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

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

但现在我想将上面数组中的字符串中的所有空格替换为%20,让它变成这样

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

我该怎么做?

【问题讨论】:

请注意,您的问题及其标题存在分歧 - 您的问题非常具体,而标题非常笼统。我在下面的回答涉及问题,而不是标题。 String.replace() ...毫无疑问的例子;-) 【参考方案1】:

遍历数组并将每个条目替换为其编码版本。

像这样,假设您实际上只是在寻找与 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");

【讨论】:

请注意,令人讨厌的是,URLEncoder.encode(str) 已被弃用,取而代之的是其将编码类型作为第二个参数(应始终为“UTF-8”)的重载形式。【参考方案2】:

这是一个简单的解决方案:

for (int i=0; i < test.length; i++) 
    test[i] = test[i].replaceAll(" ", "%20");

但是,您似乎正在尝试转义这些字符串以在 URL 中使用,在这种情况下,我建议您寻找一个可以为您执行此操作的库。

【讨论】:

看我的回答,它是 JDK 的一部分。 急于回答一个简单的问题并犯简单的错误:) 另外,请参阅我对 maerics 的回答 re: replace and replaceall 的评论。【参考方案3】:

尝试使用String#relaceAll(regex,replacement);未经测试,但这应该可以工作:

for (int i=0; i<test.length; i++) 
  test[i] = test[i].replaceAll(" ", "%20");

【讨论】:

请注意,String#replace(target, replacement) 应该可以解决问题。 replacereplaceAll 相同,但不适用于 RegExes。【参考方案4】:

对于每个字符串,你会做一个 replaceAll("\\s", "%20")

【讨论】:

【参考方案5】:
String[] test="hahaha lol","jeng jeng jeng","stack overflow";
                for (int i=0;i<test.length;i++) 
                    test[i]=test[i].replaceAll(" ", "%20");
                

【讨论】:

【参考方案6】:

直接来自 Java 文档...String java docs

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

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

【讨论】:

【参考方案7】:

您可以改用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

【讨论】:

以上是关于替换字符串数组中的某个字符串的主要内容,如果未能解决你的问题,请参考以下文章

python中删除字符串中某个字符

替换字符串数组Javascript中的字符

如何用ruby中的数组中的元素替换字符串中的单词?

替换字符串数组中的字符[重复]

string字符串替换

Postgresql 中的字符串替换源自一个额外的字符串数组