在Java中有效地格式化字符串数组

时间:2014-10-15 00:03:07

标签: java arrays regex string

我正在进行一些字符串格式化,我很好奇,如果我这样做是最有效的方式。

假设我有一个字符串数组:

String ArrayOne[] = {"/test/" , "/this/is/test" , "/that/is/" "/random/words" }

我希望结果数组为

String resultArray[] = {"test", "this_is_test" , "that_is" , "random_words" }

它非常混乱和蛮力。

for(char c : ArrayOne[i].toCharArray()) {
      if(c == '/'){
            occurances[i]++;
      }
   }

首先我计算" /"在上面的每个字符串中,然后使用这些计数,我找到每个字符串的indexOf(" /")并添加" _"相应

正如你所看到的,它变得非常混乱。

除了我正在做的蛮力方式之外,还有更有效的方法吗?

谢谢!

1 个答案:

答案 0 :(得分:3)

您可以使用replaceAllreplace,如下所示:

String resultArray[] = new String[ArrayOne.length];
for (int i = 0; i < ArrayOne.length; ++i) {
    resultArray[i] = ArrayOne[i].replaceAll("^/|/$", "").replace('/', '_');
}

replaceAll方法在字符串中搜索与第一个参数中给出的正则表达式匹配的匹配项,并将每个匹配项替换为第二个参数中的文本。

在这里,我们首先使用它来删除前导和尾部斜杠。我们在字符串的开头(^/)或字符串的末尾(/$)搜索斜杠,并将其替换为空。

然后,我们使用replace替换所有剩余的带下划线的斜杠。