Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java中字符串数组的高效格式化_Java_Arrays_Regex_String - Fatal编程技术网

Java中字符串数组的高效格式化

Java中字符串数组的高效格式化,java,arrays,regex,string,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]

我正在研究一些字符串格式,我很好奇我是否用了最有效的方法

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

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(“/”),并相应地添加“\ux”

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

除了我用暴力的方式,还有更有效的方法吗

谢谢

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

String resultArray[] = new String[ArrayOne.length];
for (int i = 0; i < ArrayOne.length; ++i) {
    resultArray[i] = ArrayOne[i].replaceAll("^/|/$", "").replace('/', '_');
}
stringresultarray[]=新字符串[ArrayOne.length];
对于(int i=0;i
replaceAll
方法在字符串中搜索与第一个参数中给定的正则表达式的匹配项,并用第二个参数中的文本替换每个匹配项

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


然后,我们使用
replace

阅读
replace
replaceAll
类的
String
方法,将所有剩余的斜杠替换为下划线。还学习如何使用正则表达式来检测<代码>字符串的开始或结束。你看到这个“/test”会是这个“测试”吗?@ kkbutoWSKi,这有什么问题吗?
而不是
replaceAll(“/”,“”)
以避免正则表达式引擎。@Pshemo:非常好。稍后将相应更新。