字符串匹配Java
1. 流程
在进行字符串匹配时,可以按照以下步骤进行操作:
步骤 | 描述 |
---|---|
1 | 输入目标字符串和待匹配字符串 |
2 | 使用匹配算法进行字符串匹配 |
3 | 输出匹配结果 |
2. 代码实现
2.1 输入目标字符串和待匹配字符串
在Java中,可以使用Scanner类来获取用户的输入。首先需要导入Scanner类:
import java.util.Scanner;
然后,可以使用Scanner类的对象来获取用户的输入:
Scanner scanner = new Scanner(System.in);
System.out.print("请输入目标字符串:");
String target = scanner.nextLine();
System.out.print("请输入待匹配字符串:");
String pattern = scanner.nextLine();
上述代码中,首先创建了一个Scanner对象scanner
,然后分别使用nextLine()
方法获取用户输入的目标字符串和待匹配字符串,并存储在target
和pattern
变量中。
2.2 使用匹配算法进行字符串匹配
Java中提供了多种字符串匹配算法,常见的有暴力匹配算法、KMP算法等。下面以暴力匹配算法为例进行说明。
暴力匹配算法的基本思想是从目标字符串的第一个字符开始与待匹配字符串进行比较,如果不匹配,则目标字符串的指针向后移动一位再进行比较,直到找到匹配的子串或目标字符串遍历完毕。
下面是使用暴力匹配算法进行字符串匹配的代码:
boolean isMatched = false;
for (int i = 0; i <= target.length() - pattern.length(); i++) {
int j;
for (j = 0; j < pattern.length(); j++) {
if (target.charAt(i + j) != pattern.charAt(j)) {
break;
}
}
if (j == pattern.length()) {
isMatched = true;
break;
}
}
上述代码中,外层循环控制目标字符串的每个字符,内层循环用于比较目标字符串和待匹配字符串的每个字符,如果不匹配则退出内层循环,并将目标字符串的指针向后移动一位。如果内层循环完成后j
的值等于待匹配字符串的长度,表示找到了匹配的子串,此时将isMatched
标记为true
,并跳出外层循环。
2.3 输出匹配结果
根据匹配结果,可以输出相应的提示信息。修改上述代码,添加输出匹配结果的代码:
if (isMatched) {
System.out.println("匹配成功!");
} else {
System.out.println("匹配失败!");
}
上述代码中,根据isMatched
标记的值输出相应的提示信息,提示用户匹配结果。
3. 示例代码
下面是完整的示例代码:
import java.util.Scanner;
public class StringMatching {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入目标字符串:");
String target = scanner.nextLine();
System.out.print("请输入待匹配字符串:");
String pattern = scanner.nextLine();
boolean isMatched = false;
for (int i = 0; i <= target.length() - pattern.length(); i++) {
int j;
for (j = 0; j < pattern.length(); j++) {
if (target.charAt(i + j) != pattern.charAt(j)) {
break;
}
}
if (j == pattern.length()) {
isMatched = true;
break;
}
}
if (isMatched) {
System.out.println("匹配成功!");
} else {
System.out.println("匹配失败!");
}
}
}
4. 关系图
下面是字符串匹配Java的关系图:
erDiagram
Developer ||.. Scanner : 使用
StringMatching ||.. Developer : 使用
StringMatching --> Scanner : 创建对象
上述关系图表示Developer
使用了Scanner
类来获取用户的输入,StringMatching
是一个Developer
。