Java中使用String#类的详细介绍
来源:爱站网时间:2022-09-05编辑:网友分享
本篇文章主要讲述了Java中使用String#类的详细内容,如果你需要了解清楚这方面的知识点,可以看看爱站技术频道小编所整理的资料,千万不要错过了。
问题描述
如果我想使用String#contains(CharSequence s): boolean
在Java regex中100%克隆Pattern
。以下呼叫是否相同?
input.contains(s);
和
Pattern.compile(".*" + Pattern.quote(s) + ".*").matcher(input).matches();
类似地,以下代码具有相同的功能吗?
Pattern.compile(Pattern.quote(s)).matcher(input).find();
我假设正则表达式搜索的性能较差,但仅受一个常数因素的影响。它是否正确?有什么方法可以优化正则表达式来模仿contains
?
我问的原因是我有一段围绕Pattern
编写的代码,创建使用contains
的另一段代码似乎很浪费。另一方面,我不希望每个代码都有不同的测试结果,即使是次要的结果。例如,是否存在与Unicode相关的任何区别?
解决方法:
如果需要基于.contains
编写类似Pattern
的方法,则应选择Pattern
版本:
Matcher#find()
如果要使用Matcher#find()
,请记住:
- [
Pattern.compile(Pattern.quote(s)).matcher(input).find()
默认情况下将不匹配换行符,并且您需要在模式的开始处使用.matches()
内联修饰符或使用.*
- 模式开始处的
(?s)
将导致过多的回溯,并且您可能会得到堆栈溢出异常,或者代码执行可能会冻结。
有关于Java中使用String#类的详细内容,想必大家都了解清楚了吧!在我们爱站技术频道网站有很多这种类型的技术文章,有需要的话可以随时来参考阅读。