js字符串方法总结

本文介绍了JavaScript中字符串查找的两种方法,包括`indexOf`的O(n)复杂度和正则表达式`search`的高效应用。同时讲述了如何将运算符字符串转换为实际运算,通过switch和eval函数的对比。

1、查找指定字符串的位置

//方法1
const order = "hlabcdefgijkmnopqrstuvwxyz";
order.indexOf("c")//4,索引
//indexOf的时间复杂度是O(m*n),其中m是想查找的字符串长度,n是字符串总长度
//对于一个字符,时间复杂度是O(n)
//方法2:利用正则表达式和字符串的search方法,返回索引

2、js怎么把运算符字符串转成运算符

//方法一:使用switch语句一个个转
switch(operator){
    case "+":
        re=chNum1+chNum2;
        break;
    case "-":
        re=chNum1-chNum2;
        break;
    case "*":
        re=chNum1*chNum2;
        break;
    case "/":
        re=chNum1/chNum2;
        break;
}
//方法二:使用eval函数,该函数会把js字符串当做脚本执行(若是操作数的非字符串,则会强制转换),得到的结果是js代码,不是字符串
//eval通常用来执行一个字符串表达式,并返回表达式的值
let chNum1="2";
let chNum2="-1";
console.log(eval(chNum1+ "-" +"("+chNum2+")"));//3
<think>嗯,用户需要JavaScript中操作字符串方法总结。首先,我得回忆一下JavaScript中有哪些常用的字符串操作方法。可能包括基本操作如拼接、截取,还有ES6新增的方法。 记得最基础的是length属性,获取字符串长度。然后charAt()和charCodeAt()用来获取特定位置的字符或其编码。slice()、substring()、substr()这些用于截取子串,不过要注意它们的参数区别。 concat()方法可以拼接字符串,不过通常用加号更方便。indexOf()和lastIndexOf()查找子串位置,includes()、startsWith()、endsWith()是ES6新增的,返回布尔值。 大小写转换有toLowerCase()和toUpperCase()。trim()去除空白,ES6还加了trimStart()和trimEnd()。split()分割成数组,replace()替换内容,match()正则匹配。 padStart()和padEnd()是ES6的填充方法。repeat()重复字符串字符串模板用反引号,可以嵌入变量和表达式。 可能需要区分不同方法的兼容性,比如ES6的方法在旧浏览器中的支持情况。还要注意参数是否包含起始结束位置,比如substring和slice的区别,substr的第二个参数是长度。 用户可能需要实际例子,所以每个方法最好附上代码示例。还要提醒常见的陷阱,比如字符串不可变性,这些方法返回新字符串而非修改原字符串。 最后,考虑用户可能的应用场景,比如表单验证、数据处理等,可以给出相关方法的使用建议。是否要比较不同方法的性能?不过可能对初学者来说,易用性更重要。 检查是否有遗漏的重要方法,比如search()、localeCompare(),或者字符串迭代器方法。不过可能基础总结不需要太深入,保持简洁明了。 确保分类清晰,比如基本操作、查找、修改、转换、ES6特性等。这样用户查阅起来更方便。可能需要用列表或代码块展示,但根据用户要求,这里用Markdown格式。 还需要注意中英文术语的一致性,比如“方法”对应“method”,避免混淆。最后,生成相关问题,帮助用户深入理解,比如问不同截取方法的区别,或如何高效拼接字符串等。</think># JavaScript字符串操作方法汇总 ## 一、基础操作方法 1. **获取长度** `length` 属性获取字符串长度 ```javascript let str = "hello"; console.log(str.length); // 5 ``` 2. **访问字符** - `charAt(index)` 获取指定位置字符 - `charCodeAt(index)` 获取字符的Unicode编码 ```javascript "abc".charAt(1); // "b" "abc".charCodeAt(0); // 97 ``` 3. **截取字符串** - `slice(start, end)` 支持负数索引 - `substring(start, end)` 自动调整参数顺序 - `substr(start, length)` 第二个参数为长度 ```javascript "javascript".slice(0,4); // "java" ``` ## 二、字符串操作 4. **拼接字符串** `concat()` 方法或 `+` 运算符 ```javascript "Hello".concat(" World"); // "Hello World" ``` 5. **查找子串** | 方法 | 功能 | ES6 | |---|---|---| | `indexOf()` | 首次出现位置 | × | | `lastIndexOf()` | 最后出现位置 | × | | `includes()` | 是否包含子串 | √ | | `startsWith()` | 是否以子串开头 | √ | | `endsWith()` | 是否以子串结尾 | √ | ```javascript "vue".includes("ue"); // true ``` ## 三、字符串修改 6. **大小写转换** `toLowerCase()` 和 `toUpperCase()` ```javascript "React".toLowerCase(); // "react" ``` 7. **去除空白** `trim()` 及其变体方法 ```javascript " text ".trimStart(); // "text " ``` 8. **替换内容** `replace(searchValue, newValue)` ```javascript "2023-08".replace(/-/g, "/"); // "2023/08" ``` ## 四、类型转换 9. **分割字符串** `split(separator)` 转换为数组 ```javascript "a,b,c".split(","); // ["a","b","c"] ``` 10. **重复生成** ES6 `repeat(count)` ```javascript "na".repeat(2); // "nana" ``` ## 五、ES6+特性 11. **模板字符串** 使用反引号 `` ` `` 支持多行字符串和插值 ```javascript let name = "Alice"; `Hello ${name}`; // "Hello Alice" ``` 12. **填充方法** `padStart(targetLength, padString)` 和 `padEnd()` ```javascript "5".padStart(3, "0"); // "005" ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值