在 Java 中修剪字符串的可能前缀

2022-08-31 20:13:16

我有,我想从中提取子字符串,排除可能的前缀。String str"abc"

想到的第一个解决方案是:

if (str.startsWith("abc"))
    return str.substring("abc".length());
return str;

我的问题是:

  1. 有没有一种“更干净”的方法可以使用前缀的正则表达式来做到这一点?split"abc"

  2. 如果是,它是否比上面的方法效率低(因为它搜索字符串的“整个”)?

  3. 如果是,有没有更好的方法(“更好的方法”=干净高效的解决方案)?

请注意,前缀可能出现在字符串中的其他位置,不应删除。"abc"

谢谢


答案 1

比上面的代码短的将是以下行:

return str.replaceFirst("^abc", "");

但是在性能方面,我想2个代码之间不会有任何实质性的区别。一个使用正则表达式,一个不使用正则表达式,但执行搜索和子字符串。


答案 2

使用 (以匹配前导String.replaceFirst^abcabc)

"abcdef".replaceFirst("^abc", "")     // => "def"
"123456".replaceFirst("^abc", "")     // => "123456"
"123abc456".replaceFirst("^abc", "")  // => "123abc456"