java - 在 Java 中高效格式化字符串数组

标签 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(“/”),并相应地添加“_”。

正如你所看到的,它变得非常困惑。

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

谢谢!

最佳答案

您可以使用replaceAllreplace ,如下:

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

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

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

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

关于java - 在 Java 中高效格式化字符串数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26372393/

相关文章:

Java regex - 如果不是单词开头,则从字符串中删除短语

Java正则表达式匹配两个连续的辅音

javascript - 如何在 Javascript 字符串中的温度中添加度数符号?

java - 使用 Java 8 Streams 映射、聚合和组合总计

java - 如何在Java中解析这个 "31/10/13"到Oracle日期

c - 动态分配内存中指针的访问值

C 数组结构,尝试访问数据,但对所有数组都得出相同的结果

Java反编译器插件不工作

java - 将/new york 映射到/area.jsp?id=1 的最佳方法是什么?

ios - 尝试将 Parse 中的一行数据提取到 Swift 中的数组中