java - 我可以使用正则表达式或其他方式更快地执行此操作吗?

标签 java regex string substring

我正在尝试了解更多字符串操作正则表达式。 例如,这是一个给定的 String 数组:

String [] tab = {"__09_23_HELLO","__89_2_WORLD","900_23_TRY","_34_90_SATELLITE", 
"___23_", "390"};

我想在这里做的是只在下划线后面跟一个字母之后保留数据,如果我找不到它,则返回null。在这个例子中,我会得到这个:

HELLO WORLD TRY SATELLITE null null

所以我写了这个递归函数:

public String getName(String string, int i)
{
    if(i == string.length()-1) return null;
    if(string.charAt(i) != '_' || 
      (string.charAt(i) == '_' && !Character.isLetter(string.charAt(i+1)))) 
        return getName(string, i+1);
    else
        return string.substring(i+1);
}

而且效果很好。但是由于我不太了解正则表达式(也许还有其他方法?),我想知道我是否可以使用正则表达式来做到这一点,以及它是否会更快地处理大量数据。

感谢您的回答。

最佳答案

虽然您可以使用递归函数,但使用其他方法肯定会更快:

  • 要么我会使用循环(类似于您的方法,但使用循环而不是递归来增加计数器 i)。

  • 或者,按照您的建议使用正则表达式匹配编写它。

这两种可能性中哪一种更快并不容易决定,但我猜想正则表达式更快,除非你的循环代码非常聪明并且尽可能少。要找出没有办法将这两种方法编码并对其进行基准测试......

关于java - 我可以使用正则表达式或其他方式更快地执行此操作吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15267363/

相关文章:

c++ - 输出数组某索引的部分字符串

java - 方法 max lines 的最新建议是什么?

正则表达式返回 anchor 之间的多个匹配项

ios - 在两个方括号([])之间获取字符串是Swift 4

javascript - 正则表达式捕获特定字符串之前的所有内容,然后逐步捕获

regex - Concat 正则表达式与常量声明中的字符串作为 oneliner

java - 确定一个字符串具有所有唯一字符而不使用额外的数据结构并且没有小写字符假设

java - Stetho:在控制台中看不到网络调用

java - 如何在 spring mvc 中覆盖 getSession()

嵌入特殊字符的 url 出现 java.lang.IllegalArgumentException