💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
[TOC] # 题1、如何判断一个字符中是否包含某一个字符? 答: 方法一、 indexOf,返回值是字符在字符串的位置(数字),如果在第1个位置返回0,如果没有返回-1 方法二、includes(ES6),返回值是布尔类型 方法三、正则表达式,比如:判断是否有x : 'abc'.match(/x/) 方法四、search,用于检索字符串中指定的子字符串,或检索与正则表达式相匹配的子字符串。如果没有找到任何匹配的字符串,则返回 -1 ~~~ // 判断一个字符串中是否包含某一个字符的方法 // 方法一、 indexOf() 返回值是字符在字符串中位置的下标,如果在第5个位置返回4,如果没有返回 -1 console.log(a.indexOf('o'));    // 4 // 方法二、 includes()(ES6),返回值是布尔类型 console.log(a.includes('o'))    // true // 方法三、 正则表达式,match()方法 console.log(a.match(/o/));      // [ 'o', index: 4, input: 'helloworld', groups: undefined ] // 方法四、 search() 方法,用于检索字符串中指定的子字符串,或检索与正则表达式相匹配的子字符串。如果没有找到任何匹配的字符串,则返回 -1 console.log(a.search('o'));     // 4 console.log(a.search(/o/));     // 4 ​ ~~~ # 题2、如何截取字符串中3~5个字符? 答:比如: 'helloworld' --> 截取3~5的结果:llo。 方法一、 substring, 'helloworld'.substring(2,5) 方法二、substr, 'helloworld'.substr(2,3) 区别: 第二个参数不同,一个是结束的下标(substring),一个是截取的长度(substr) ~~~ // 截取字符串中第3~5个字符 var b = 'helloworld' // 方法一、 substring console.log(b.substring(2, 5)); // 方法二、 substr console.log(b.substr(2, 3)); ~~~ # 题3、如何获取一个字符串的长度? 答: length 属性。比如,'helloworld'.length # 题4、如果把字符串中的字母转成大写?转成小写呢? 答: toUpperCase : 转大写 toLowerCase : 转小写 ~~~ 'abc'.toUpperCase() // ABC 'BCA'.toLowerCase() // bca ~~~ # 题5、 JS 中如何将单词的首字母大写? 答: 1. 先为字符串原型添加一个方法,在 String 原型上添加(String.prototype)的函数,可以在所有字符串上直接使用。 ~~~ String.prototype.firstUpperCase = function(){    // 通过正则表达式,匹配第一个字符,和后面的字符    return this.replace(/\b(\w)(\w*)/g, function($0, $1, $2) {        // 将第一个字符转大写 + 后面的字符转小转        return $1.toUpperCase() + $2.toLowerCase();   }); } ~~~ 2. 添加完之后,所以的字符串就可以直接使用 firstUpperCase 方法了 ~~~ 'hello'.firstUpperCase() // Hello ~~~ # 题6、如何把字符串中所有的数字转成 \* ? 答: 比如, 'a123b456c789' --> `a***b***c***` 实现思路: 使用这种表达式 + replace 方法 ~~~ // 把字符串中所有的数字转成 * function replaceXX(str) {    // 替换: 第一个参数:正则表达式    // \\d: 数字    // /g: 全局替换,如果不加只会替换第一个数字    return str.replace(/\d/g,'*') } console.log(replaceXX('a123b456c789'));  // a***b***c*** ~~~ # 题7、如何将字符串转成数组? 答: 使用 split 。 比如: ~~~ console.log('hi, nice, to, meet, you'.split(','));  // [ 'hi', ' nice', ' to', ' meet', ' you' ] ~~~ # 题8、如何将数组转成字符串? 答: 方法一、 join , 优点:可以任意指定分隔符。 方法二、 toString , 默认是以 , 分隔 ~~~ // 将数组转成字符串 let arr = [ 'hi', ' nice', ' to', ' meet', ' you' ]; console.log(arr.join(''));  // hi nice to meet you console.log(arr.toString());    // hi, nice, to, meet, you ~~~ # 题9、如何合并两个字符串? 答: 方法一、 使用 + ,比如: 'abc'+'bcd' ==> abcbcd 方法二、使用 concat方法,比如: 'abc'.concat('bcd') ==> abcbcd ~~~ // 合并两个字符串 // 方法一、 + console.log('abc' + 'bcd');   // abcbcd // 方法二、 concat let str = 'abc'.concat('bcd') console.log(str); // abcbcd ~~~ # 题10、请说出至少 10 个操作字符串的方法? 答: split: 字符串转数组 join: 数组转字符串 toString: 数组转字符串 concat: 合并多个字符串 substring: 从开始到结束下标截取 substr: 从开始截取一定长度的字符串 indexOf: 查看一个字符串中某一个字符串的位置 replace: 字符串替换,可以使用正则来匹配替换 match: 用字符串去匹配一个正则 toUpperCase: 字母转大写 toLowerCase: 字母转小写 ![](http://ww1.sinaimg.cn/large/007WurYGgy1gf4qwru6o8j312c15u7wh.jpg) # 题11、 如何把一个字符串中所有的手机号码中的中间4位数字变成 `****` ? 答:'ab13455334444sd' ==> 'ab1344444d' 实现思路: 使用正则表达式 + replace 方法 ~~~ // 把一个字符串中所有的手机号码中的中间4位数字变成 **** function replaceXX(str) {    return str.replace(/(1\d{2})(\d{4})(\d{4})/g, '$1****$3') } let rstr = 'abdf13344445555das' console.log(replaceXX(rstr))    // abdf133****5555das ~~~ # 题12、 转成驼峰命名法? 答: 比如:"get-element-by-id" --> getElementById 思路: 先转数组,循环数组处理每个单词首字母大写,转回字符串。 ~~~ String.prototype.firstUpperCase = function(){    // 通过正则表达式,匹配第一个字符,和后面的字符    return this.replace(/\b(\w)(\w*)/g, function($0, $1, $2) {        // 将第一个字符转大写 + 后面的字符转小转        return $1.toUpperCase() + $2.toLowerCase();   }); } // 转驼峰命名法 let hump = 'get-element-by-id' hump = hump.split('-').map((v, k) => {    if (k > 0) {        return v.firstUpperCase()   } else {        return v   } }).join('') console.log(hump); // getElementById ~~~