从字符串中提取一些字符串的更好方法

时间:2019-05-30 00:12:21

标签: java string

是否有更好的方法从字符串中提取子字符串?

我想提取字符串中用“和”括起来的字符。我使用了$colors = Phone::find($phone_Id)->color()->select('id', 'name')->get()->toArray() dd($colors); substring()方法,但是我确定有更好的方法。

例如,对于此输入:

  

我“学习” java“和” python。

所需的输出将是:

  

学习

     

这是我尝试的方法:

indexOf()

2 个答案:

答案 0 :(得分:3)

PatternMatcher类似乎满足您的需求:

Pattern pattern = Pattern.compile("\"([a-zA-Z]*)\"");
Matcher matcher = pattern.matcher(input);

while(matcher.find()) {
    System.out.println(matcher.group(1));
}

进一步的解释:

  • Pattern pattern = Pattern.compile("\"([a-zA-Z]*)\"");->创建一个Pattern以匹配引号字符之间的字母
  • Matcher matcher = pattern.matcher(input);->创建一个Matcher来链接Pattern和用户输入。
  • while(matcher.find()),但有匹配项...当然,您可以将匹配的字符串添加到数组中,这里我只打印它们。

答案 1 :(得分:0)

我认为正则表达式非常适合您的事业。使用Pattern类,您可以编译正则表达式并返回匹配项。详细信息如下:

https://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html

对于要在引号之间提取的特定正则表达式,可以在此处参考讨论:

RegEx: Grabbing values between quotation marks

正则表达式解决方案很好,因为您可以轻松地将其推广到当前用例之外。