Ma *_*Tâm 2 java arrays string recursion
我使用递归来删除文本中不必要的字符.
EX:source ="这是demo java remove string"
regex ="这,是,java"
result ="demo remove string"
当程序停止递归函数时,我很难不提供条件.如果有任何方法可以更有效地使用递归工作,请告诉我
public class NewClass2 {
static String regexs[] = {"This","is", "java"};
private static String getRecursive(String source, int level) {
String content = "";
if (level > regexs.length - 1) {
return "";
}
level++;
for (String regex : regexs) {
content = source.replaceAll(regex, "");
if (!content.equals("")) {
content = getRecursive(content, level);
}
}
return content;
}
public static void main(String[] args) {
String result = getRecursive("This is demo java remove string", 0);
System.out.println(result);
}
}
Run Code Online (Sandbox Code Playgroud)
你的递归方法......都错了.
level > regexs.length - 1,你应该回来source,而不是""清理的方法变得简单得多:
private static String getRecursive(String source, int level) {
if (level >= regexs.length) {
return source;
}
return getRecursive(source.replaceAll(regexs[level], ""), level + 1);
}
Run Code Online (Sandbox Code Playgroud)
但是,这仍然不能完全满足您的要求.它提供了"demo remove string"而不是"demo remove string",因为其中的值regexs不包含空格,因此不会删除单词之间的空格.要解决这个问题,您可以附加"\\s*"到模式,例如:
return getRecursive(source.replaceAll(regexs[level] + "\\s*", ""), level + 1);
Run Code Online (Sandbox Code Playgroud)