模仿String.indexOf,判断一个字符串是否包含另一个字符串
.
目录:
一.方法介绍
二.图示意
三.源代码
一.方法介绍
判断一个字符串str1是否包含另一个字符串str2:
1.取str2的第一个字符一次和str1的字符依次比较,知道找到相等的字符为止或者找完整个str1的length.
2.当找到相等的字符后,在str2长度内str2与str1依次进行比较
二.图示意
三.源代码
JDK中java.lang.String.indexOf(char[], int, int, char[], int, int, int)源码:
public static String compareDoubleString(String source, String target) {// 分别获取两个字符串的长度,因为后面会用到int sourceLength = source.length();int targetLength = target.length();// 获取目标的第一个字符char firstTargetChar = target.charAt(0);// 最多比较的次数int max = sourceLength - targetLength;// 如果第一个不相等,那么一直找到相等的那一个或者找完都不能找到int sourceOffset = -1;while (++sourceOffset < max&& source.charAt(sourceOffset) != firstTargetChar) {}if (sourceOffset <= max) {// 设置新的源索引int newSourceOffset = sourceOffset + 1;// 剩余的比较长度,也就是在offset上增加targetLengthint leaveLength = newSourceOffset + targetLength - 1;int targetOffset = 1;// 连续的比较,条件不符合的时候跳出for (; newSourceOffset < leaveLength&& source.charAt(newSourceOffset) == target.charAt(targetOffset); newSourceOffset++, targetOffset++);if (newSourceOffset == leaveLength) {return "包含:source包含target字符串!";}}return "不包含:source不包含target字符串!";}