Java正则如何做到匹配一个字符串出现一次或者多次
查找同一字符串的多次匹配
n+ 匹配任何包含至少一个 n 的字符串。
+:出现一次或多次
输入一个字符串,再输入要查找的字符,判断该字符在该字符串中出现的次数
例1:字符串1:"爱中国,爱故乡!" 查找"爱"
例2:字符串2:"爱中国,爱故乡,爱" 查找"爱"
例3:字符串3:"中国,爱故乡,爱" 查找"爱"
例4:字符串4:"爱中国,故乡,爱" 查找"爱"
例5:字符串5:"爱你爱你爱他爱她爱他爱你" 查找"爱你"
方法介绍:通过字符串截取方式来查询。此方法最简单快捷。(还有一种方法是字符串分隔的方法来计算,但是java中的字符串分割存在一定问题,所有就单独的分割后查找的话会出现无法查找完全,所以需要进行一些特殊处理。)
方法一:字符串的截取查找
import java.util.Scanner;
public class Exer01 {
public static void main(String[] args) {
// 创建系统输入对象
Scanner input = new Scanner(System.in);
// 系统提示输入字符串
System.out.print("请输入一个字符串:");
String string1 = input.next();
// 系统提示输入要查找的字符串
System.out.print("请要查找的字符串:");
String string2 = input.next();
int length = string2.length();
// 记录查找到的次数
int count = 0;
do {
int index1 = string1.indexOf(string2);
count++;
string1 = string1.substring(index1 + length, string1.length());
} while (string1.indexOf(string2) >= 0);
System.out.println("查找[" + string2 + "]查找到" + count + "次。");
}
}
方法二:通过字符串分隔查找,需要进行部分特殊处理。(不推荐,方法过于繁琐,不适用)
import java.util.Scanner;
public class Exer02 {
public static void main(String[] args) {
// 创建系统输入对象
Scanner input = new Scanner(System.in);
// 系统提示输入字符串
System.out.print("请输入一个字符串:");
String string1 = input.next();
// 系统提示输入要查找的字符串
System.out.print("请要查找的字符串:");
String string2 = input.next();
// 记录查找到的次数
int count = 0;
// 分割要查找的字符串
String[] str2 = string2.split("");
int len = str2.length;
// 分割原字符串
String[] str1 = string1.split("");
for (int i = 0; i < str1.length; i++) {
for (int j = 0; j < str2.length; j++) {
for (int k = 0; k < len; k++) {
if ((i + k) < str1.length || (j + k) < str2.length) {
if (str1[i + k].equals(str2[j + k])) {
if (k == str2.length - 1) {
count++;
}
}else {
break;
}
}else{
break;
}
}
}
}
System.out.println("查找[" + string2 + "]查找到" + count + "次。");
}
}
(有问题或错误请指出,希望能帮助到你)