indexOf 方法

indexOf 方法

函数功能:返回 String 对象内第一次出现子字符串的字符位置。

函数原型:strObj.indexOf(subString[, startIndex])  

参数:

strObj :字串1,必选项。String 对象或文字。

subString :字串2,必选项。要在 String 对象中查找的子字符串。

starIndex字串3 ,可选项。该整数值指出在 String 对象内开始查找的索引。如果省略,则从字符串的开始处查找。

说明:

indexOf 方法返回一个整数值,指出 String 对象内子字符串的开始位置。如果没有找到子字符串,则返回 -1。 字串5

如果 startindex 是负数,则 startindex 被当作零。如果它比最大的字符位置索引还大,则它被当作最大的可能索引。 从左向右执行查找。否则,该方法与 lastIndexOf 相同。

示例

下面的示例说明了 indexOf 方法的用法。

function IndexDemo(str2){
   var str1 = "BABEBIBOBUBABEBIBOBU"
   var s = str1.indexOf(str2);
   return(s);
}
 

========= 

其他实例:

我获得一个字符串a为 "1,18,33"
如果写成 a indexOf("1") 好象查不出来 更重要的是 18和1前面都有个1所以成立的条件不准确 请问应该怎么写啊

 

indexOf这样用

string test = "1,18,33";
if (test.IndexOf("1") > -1)
{
     Response.Write("存在");
}
else
{
     Response.Write("不存在");
}

但是如果说只有1符合要求,而18中的1不符合要求,那不能用IndexOf来做,这样

using System.Text.RegularExpressions;

string test = "1,18,33";
if (Regex .IsMatch(test, @"/b1/b"))
{
     Response.Write("存在");
}
else
{
     Response.Write("不存在");
}

注释:

/b 在正则中匹配一个单词边界

写了一个方法

//src 源字符串
//tar 待比较字符串
private bool CheckString(string src, string tar)
{
     string temp = Regex.Replace(tar, @"[.$^{/[(|)*+?//]", "");
     if (temp.Length < tar.Length)
         return false;
     if (Regex.IsMatch(src, @"/b" + tar + @"/b"))
         return true;
     return false;
}

 

=======

`indexOf` 方法是许多编程语言中用于查找某个元素在数组、字符串或集合中首次出现的位置的常用方法。它广泛应用于字符串处理、数组操作等场景。 下面以 **JavaScript** 和 **Java** 为例,分别说明 `indexOf` 的使用方法和原理,并给出示例代码。 --- ### JavaScript 中的 `indexOf` 在 JavaScript 中,`indexOf` 可用于字符串和数组,返回指定元素首次出现的索引位置,若未找到则返回 `-1`。 #### 示例代码: ```javascript // 字符串中的 indexOf let str = "Hello, world!"; console.log(str.indexOf("world")); // 输出: 7 // 数组中的 indexOf let arr = [10, 20, 30, 40, 50]; console.log(arr.indexOf(30)); // 输出: 2 ``` #### 解释: - `str.indexOf("world")`:查找子字符串 `"world"` 在字符串 `str` 中首次出现的位置,返回索引 `7`。 - `arr.indexOf(30)`:查找数组 `arr` 中值为 `30` 的元素的索引,返回 `2`。 --- ### Java 中的 `indexOf` 在 Java 中,`indexOf` 主要用于字符串类(`String`)和一些集合类(如 `ArrayList`)。 #### 示例代码: ```java public class Main { public static void main(String[] args) { // String 类的 indexOf String str = "Hello, world!"; System.out.println(str.indexOf("world")); // 输出: 7 // ArrayList 的 indexOf java.util.ArrayList<Integer> list = new java.util.ArrayList<>(); list.add(10); list.add(20); list.add(30); System.out.println(list.indexOf(20)); // 输出: 1 } } ``` #### 解释: - `str.indexOf("world")`:查找子字符串 `"world"` 在字符串 `str` 中的起始索引位置。 - `list.indexOf(20)`:查找 `ArrayList` 中第一个值为 `20` 的元素的索引。 --- ### 自定义实现一个 `indexOf` 方法(以字符串为例) 我们可以手动实现一个简单的 `indexOf` 函数来理解其原理。 #### Python 实现: ```python def index_of(s, target): len_s = len(s) len_target = len(target) for i in range(len_s - len_target + 1): if s[i:i + len_target] == target: return i return -1 # 测试 print(index_of("Hello, world!", "world")) # 输出: 7 ``` #### 解释: - 该函数从字符串 `s` 的每个位置开始截取与 `target` 长度相同的子串,逐一比较。 - 若匹配成功,返回当前起始索引;否则返回 `-1`。 --- ### 时间复杂度分析: - **字符串匹配**:最坏情况下时间复杂度为 O(n * m),其中 n 是主串长度,m 是目标串长度。 - **优化方法**:可以使用 KMP 算法、Boyer-Moore 或 Rabin-Karp 等算法进行优化。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值