我有一个字符串和一个模式
myString = "thiS is testing my patience with regexIs";
pattern = "is";
我想遍历myString并打印包含该模式的每个单词。我的梦想输出(不敏感到案例)将是
"thiS is regexIs"
我知道我会遍历myString的长度,但我无法想到在这种情况下有意义的任何字符串方法。我曾经计算过之前的事件(使用像charAt(i),match,contains,replaceAll这样的东西),并且在我的前两周找到了模式,索引位置,特殊字符,数字等等。真正的String方法用法,但到目前为止我学到的东西我不能拼凑起来弄清楚这个难题。
答案 0 :(得分:3)
以下方法findMatches()
会在输入句子中返回List
个匹配词。您可以使用它来获取匹配项,然后将它们打印到您需要的位置。
List<String> findMatches(String input, String pattern) {
String[] parts = input.split(" ");
List<String> words = new ArrayList<String>();
for (String part : parts) {
if (part.toLowerCase().contains(pattern.toLowerCase())) {
words.add(part);
}
}
return words;
}
<强>用法:强>
String myString = "thiS is testing my patience with regexIs";
String pattern = "is";
List<String> matches = findMatches(myString, pattern);
for (String match : matches) {
System.out.println(match + " ");
}
答案 1 :(得分:2)
您可以拆分字符串以获取数组中的单词。循环数组并将它们与您的模式进行比较。
String myString = "thiS is testing my patience with regexIs";
String[] arr = myString.split(" ");
for (String string : arr) {
if (string.toLowerCase().contains("is")) {
System.out.print(string+ " ");
}
}
答案 2 :(得分:1)
根本不需要循环。
String s = "thiS is testing my patience with regexIs";
System.out.println(s.replaceAll("(?i)\\b((?!is).)+\\b", " "));