是否有更好的方法从字符串中提取子字符串?
我想提取字符串中用“和”括起来的字符。我使用了$colors = Phone::find($phone_Id)->color()->select('id', 'name')->get()->toArray()
dd($colors);
和substring()
方法,但是我确定有更好的方法。
例如,对于此输入:
我“学习” java“和” python。
所需的输出将是:
学习
和
这是我尝试的方法:
indexOf()
答案 0 :(得分:3)
Pattern
和Matcher
类似乎满足您的需求:
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
正则表达式解决方案很好,因为您可以轻松地将其推广到当前用例之外。