今天看了一下String的indexOf实现,其实实现原理不难,先把String转换为char[],然后首先找到target的的第一个字符开始匹配.
/** * 类似String.indexOf(),不过是针对byte array * * @param source * @param target * @return */ public static int indexOf(byte[] source, byte[] target) { int sourceCount = source.length; int targetCount = target.length; byte first = target[0]; int max = (sourceCount - targetCount); for (int i = 0; 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 = 1; j < end && source[j] == target[k]; j++, k++) ; if (j == end) { /* Found whole string. */ return i; } } } return -1; }
隐含的问题: 在一个大数组中寻找一个小数组。
相关推荐
### String index out of 4解决方法 在编程中,尤其是使用Java进行字符串处理时,经常会遇到`StringIndexOutOfBoundsException`异常。这种异常通常发生在试图访问一个不存在的字符串索引时。例如,如果尝试访问一个...
为了实现`indexOf`函数忽略大小写的功能,我们可以采取两种基本策略: 1. **转换大小写**:将目标字符串和待查找的子字符串都转换为统一的大写或小写,然后进行比较。 2. **自定义实现**:通过正则表达式或自定义...
通过模拟 `String.indexOf()` 的实现,我们可以更好地理解其工作原理,并且在设计自己的字符串处理函数时有更清晰的思路。同时,这也是一种很好的算法训练,有助于提升编程能力。在实际开发中,根据具体需求和性能...
- `indexOf(String str)`:查找子字符串第一次出现的位置。 - `contains(CharSequence s)`:检查字符串是否包含指定的子字符串。 - `replace(char oldChar, char newChar)`:替换所有出现的旧字符为新字符。 - `...
public static void main(String[] args) { String haystack = "aaaaasdfasof"; String needle = "df"; char[] hs = haystack.toCharArray(); int hl = hs.length; char[] ns = needle.toCharArray(); int nl ...
本文主要分析了Prototype框架在字符串操作方面的源码,特别是对indexOf方法的优化实现。 首先,文章提到Prototype通过扩展String的原型(String.prototype),添加了一系列字符串处理方法。这些方法大致可以分为几...
JavaScript 本身没有提供直接查找多个字符的方法,但可以通过循环或数组的 `indexOf` 来实现。 ```javascript let str = "Hello, World!"; let charsToFind = ['o', 'r', 'l', 'd']; for (let char of charsToFind)...
除了直接使用`IndexOf()`外,还可以采用替换的方式来间接实现查找。这种方法适用于需要替换特定字符或子字符串的场景。示例代码如下: ```csharp string returnStr = string.Empty; returnStr = str.Replace("DD11EF...
Android 系统中搜索文件的一个简单例子,功能和Windows搜索文件... if(f.getName().indexOf(keyword)>=0) { result =f.getPath() "\n"; } } if(result.equals("")) result="找不到文件!!"; return result;
抽象方法是为了提供一个模板供子类实现,而静态方法与类关联而非特定对象,因此抽象方法不能是静态的。如果一个方法同时声明为抽象和静态,则会导致编译错误。 ##### 3. 父类引用指向子类实例时的多态性 题目描述...
- **语法**:`string.indexOf(searchValue[, fromIndex])` - **参数**: - `searchValue`:要搜索的字符串值。 - `fromIndex`:可选,规定在字符串中开始搜索的位置。 **示例**: ```javascript var x = ...
用C++语言实现的一个功能强大的String类,该类包含对字符串的各种灵活操作,40多个强大的API(CharAt,Length,IndexOf,Replace,Add,Insert,Remove.....), 为学习数据结构的朋友提供了很好的帮助。
`String.indexOf`方法是Java和JavaScript等编程语言中处理字符串时非常常用的一个功能,用于查找一个子字符串在原字符串中首次出现的位置。这个方法对于文本分析、数据处理以及字符串操作等场景都至关重要。 方法的...
public static int indexOf(String orgin, String serachString) { char[] chars = orgin.toCharArray(); char[] sChars = serachString.toCharArray(); int index = -1; int s_index = 0; int move = 0; ...
baos.write((hexString.indexOf(hexString.charAt(i)) | hexString.indexOf(hexString.charAt(i + 1)))); } return baos.toByteArray(); } ``` 这段代码首先创建一个`ByteArrayOutputStream`对象用于存放结果,...
- 当需要查找具有特定特征的字符串(如以某个字符开头且后面跟数字的字符串)时,`indexOf()`方法无法实现,此时需要使用正则表达式和`search()`方法。 3. **应用场景:** - 大多数情况下,使用`indexOf()`方法是...
9. `.IndexOf(char c)` 和 `.IndexOf(string str)` 这两个方法用于查找字符或子字符串在字符串中的位置,返回其索引,找不到则返回 -1。 ```csharp string str = "Hello, World!"; int commaIndex = str.IndexOf...
`indexOf(int ch)` 和 `indexOf(int ch, int fromIndex)` - **功能**:返回指定字符在此字符串中首次出现的索引;如果未找到,则返回 -1。第二个版本的 `indexOf` 方法允许从特定索引开始搜索。 - **示例**: ```...
String.prototype._indexOf = String.prototype.indexOf; String.prototype.indexOf = function() { if (typeof(arguments[arguments.length - 1]) != 'boolean') return this._indexOf.apply(this, arguments); ...