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#类的详细内容,想必大家都了解清楚了吧!在我们爱站技术频道网站有很多这种类型的技术文章,有需要的话可以随时来参考阅读。

上一篇:如何使用HtmlUnit获取特定元素

下一篇:java读取文件和创建数组的解决方法

您可能感兴趣的文章

相关阅读

热门软件源码

最新软件源码下载