我想提取字符串中被“and”包围的字符。我使用了substring()
和indexOf()
方法,但我相信还有更好的方法。
例如,对于此输入:
我学会了“
”和“python”。
期望的输出将是:
学习
和
下面是我尝试过的:
public static void main(String[] args) {
Scanner putIn = new Scanner(System.in);
String input = putIn.nextLine();
String subInput = input.substring(input.indexOf("\"") + 1);
System.out.println(subInput);
String strOne= subInput.substring(0, subInput.indexOf("\""));
System.out.println(strOne);
String strTwo = subInput.substring(strOne.length() + 4, subInput.length() - 2);
System.out.println(strTwo);
}
发布于 2019-05-30 08:39:20
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]*)\"");
charactersMatcher matcher = pattern.matcher(input);
创建与input.while(matcher.find())
之间的字母相匹配的Matcher
,并创建一个Pattern
与用户input.while(matcher.find())
相链接的Matcher
...当然,您也可以将匹配的字符串添加到数组中,这里我只是打印它们。发布于 2019-05-30 08:18:30
我认为正则表达式非常适合你在这里的工作。使用Pattern类,您可以编译正则表达式并返回匹配结果。以下是详细信息:
https://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html
对于您希望在引号之间提取的特定正则表达式,您可以在此处参考讨论:
RegEx: Grabbing values between quotation marks
正则表达式解决方案很好用,因为您可以很容易地将其推广到当前用例之外。
https://stackoverflow.com/questions/56370074
复制相似问题