我正在研究一些字符串格式,我很好奇我是否以最有效的方式做到这一点。
假设我有一个字符串数组:
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(“/”),并相应地添加“_”。
正如你所看到的,它变得非常困惑。
除了我正在做的暴力方式之外,还有更有效的方法吗?
谢谢!
最佳答案
您可以使用replaceAll
和 replace
,如下:
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/