.
目录:
一.方法介绍
二.图示意
三.源代码
一.方法介绍
判断一个字符串str1是否包含另一个字符串str2:
1.取str2的第一个字符一次和str1的字符依次比较,知道找到相等的字符为止或者找完整个str1的length.
2.当找到相等的字符后,在str2长度内str2与str1依次进行比较
二.图示意
三.源代码
JDK中java.lang.String.indexOf(char[], int, int, char[], int, int, int)源码:
/**
* Code shared by String and StringBuffer to do searches. The
* source is the character array being searched, and the target
* is the string being searched for.
*
* @param source the characters being searched.
* @param sourceOffset offset of the source string.
* @param sourceCount count of the source string.
* @param target the characters being searched for.
* @param targetOffset offset of the target string.
* @param targetCount count of the target string.
* @param fromIndex the index to begin searching from.
*/
static int indexOf(char[] source, int sourceOffset, int sourceCount,
char[] target, int targetOffset, int targetCount,
int fromIndex) {
if (fromIndex >= sourceCount) {
return (targetCount == 0 ? sourceCount : -1);
}
if (fromIndex < 0) {
fromIndex = 0;
}
if (targetCount == 0) {
return fromIndex;
}
char first = target[targetOffset];
int max = sourceOffset + (sourceCount - targetCount);
for (int i = sourceOffset + fromIndex; i <= max; i++) {
/* Look for first character. */
if (source[i] != first) {
while (++i <= max && source[i] != first);
}
/* Found first character, now look at the rest of v2 */
if (i <= max) {
int j = i + 1;
int end = j + targetCount - 1;
for (int k = targetOffset + 1; j < end && source[j] ==
target[k]; j++, k++);
if (j == end) {
/* Found whole string. */
return i - sourceOffset;
}
}
}
return -1;
}
模仿的判断一个字符串是否包含另一个字符串的源码:
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上增加targetLength
int 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字符串!";
}
.
分享到:
相关推荐
String对象的方法 方法一: indexOf() (推荐) var str = "123" console.log(str.indexOf("2") !...match() 方法可在字符串内检索指定的值,或找到一个或多个正则表达式的匹配。 方法三: search()
在处理字符串时,判断一个字符串是否包含另一个子字符串是常见的需求。本篇内容将详细介绍如何使用JavaScript来实现这一功能,并提供相关的代码示例和技巧。 首先,介绍基本的字符串包含判断方法。在ES5标准中,...
1. **`Contains`方法**:这是字符串类的一个成员,用于检查字符串是否包含指定的字符。例如: ```csharp string str = "Hello, World!"; char c = 'o'; if (str.Contains(c.ToString())) { Console.WriteLine(...
因此,我们可以通过检查`IndexOf`方法的返回值是否大于-1来判断一个字符串是否包含另一个字符串。 以下是如何使用`IndexOf`方法的基本语法: ```csharp int index = sourceString.IndexOf(subString); ``` 在这个...
在本压缩包“字符串string.zip”中,主要包含的是与Java编程语言中字符串相关的教学资料,特别是针对S1课程的学员。这个课程旨在帮助学生深入理解程序逻辑,并且重点聚焦在Java中的字符串处理。文件“Chapter15”...
本文详细介绍了如何在Delphi中判断一个字符串是否存在于ListBox中,包括使用内置方法和调用Windows API两种方式。此外,还讨论了字符串存在时的一些常见操作。通过这些方法,可以有效地实现对ListBox中数据的管理和...
在C#编程语言中,处理字符串是常见的任务之一,其中包括删除字符串中的特定部分或子字符串。本篇文章将详细探讨如何在C#中实现这一功能,包括多种方法和实用技巧。 首先,C#提供了多种内置方法来操作字符串,比如`...
7. 判断字符串是否为空或只包含空格:`String.IsNullOrEmpty()`和`String.IsNullOrWhiteSpace()`。 8. 字符串比较:`String.Equals()`和`String.Compare()`可以进行字符串的比较,区分大小写或不区分大小写。 接...
开发者经常需要检查一个字符串是否包含另一个字符串,或者需要找出一个子字符串在母字符串中的位置。为此,JavaScript 提供了 String.prototype.indexOf 和 String.prototype.includes 两个方法。本文将详细探讨这两...
以上就是Java中判断一个字符串是否包含在另一个字符串中的几种常见方法。根据实际需求,你可以选择最适合的方法。在实际编程中,还需要考虑性能因素,因为不同的方法在处理大量数据时可能有不同的效率。例如,对于...
总结来说,判断一个字符串是否包含另一个子串,可以使用`indexOf`、`search`、`contains`等方法。每种方法都有其特点和适用场景,选择时应考虑实际需求和环境支持。同时,也要注意在实际开发中进行性能测试,以保证...
在C#中,处理字符串时,我们经常需要从一个较大的字符串中提取出特定部分,比如位于两个已知字符串之间的子串。这在解析日志、处理配置文件或者从HTML源码中提取信息时非常常见。标题中的“字符串提取(获取两个字符...
`indexOf`函数用于查找一个字符串在另一个字符串中的位置。例如,如果我们有字符串`"monkey"`,我们可以使用`indexOf`来查找字符`"m"`或`"key"`的位置。如果子字符串不存在于原字符串中,`indexOf`会返回-1。例如: ...
在实际项目中,你可能需要根据具体需求对这些基础方法进行调整,例如,添加错误处理、判断字符串是否为空,或者优化性能以处理大量数据。在进行字符串操作时,务必注意性能问题,因为字符串是不可变的,频繁的字符串...
在Java编程语言中,字符串操作是非常常见的任务,其中包括判断一个字符串是否包含在另一个字符串中。在给定的标题和描述中,我们面临的问题是检查字符串"Tom"是否存在于字符串"I am Tom, I am from China"中。这可以...
这是一个简单的Java程序,用于演示如何使用indexOf()方法检查一个字符串是否包含在另一个字符串中。 1. 运行程序,按提示输入主字符串。 2. 输入后,程序会自动检查"Tom"是否存在于输入的字符串中。 3. 结果将在...
根据给定的信息,我们可以分析并总结出以下与“求字符串中的第一个数字”相关的知识点: ### 1. 字符串操作基础 #### 1.1 字符串简介 在 Java 中,`String` 类用于表示不可变的字符序列,即字符串。字符串在 Java ...
1. **Arduino String 类**: Arduino IDE 提供了一个名为 `String` 的类,它允许我们创建、操作和管理字符串。`String` 类提供了许多方法,如 `concat()`, `substring()`, `indexOf()`, `charAt()` 等,用于对字符串...