💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
[toc] > 字符串 API:[https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global\_Objects/String](https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/String) # 题1、如何判断一个字符串中是否包含某一个字符? 答: 方法一、indexOf,返回值是字符在字符串中的位置(数字),如果在第1个位置返回0,如果没有返回 -1 方法二、includes(ES6),返回值是布尔类型 方法三、正则表达式,比如:判断是否有 x :'abc'.match(/x/) # 题2、如何截取字符串中第3~5个字符? 答:比如:'abcdefg' --> 截取3~5的结果:cde。 方法一、substring , 'abcdefg'.substring(2,5) 方法二、substr , 'abcdefg'.substr(2,3) 区别:第二个参数含义不同,一个是结束的下标(substring),一个是截取的长度(substr) # 题3、如何获取一个字符串的长度? 答:length 属性。比如:'abcde'.length # 题4、如何把字符串中的字母转成大写?转成小写呢? 答: toUpperCase :转大写 toLowerCase:转小写 ~~~ 'abc'.toUpperCase() 'BCA'.toLowerCase() ~~~ # 题5、JS 中如何将单词的首字母大写? 答: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 方法了 ~~~ 'abcdefg'.firstUpperCase() ~~~ ![](https://img.kancloud.cn/25/ec/25ece47825ed83ee61385c18f20b7337_1430x732.png) # 题6、如何把字符串中所有的数字转成 * ? 答:比如:'ab32abd4r43af' ==> 'ab**abd*r**af' 实现思路:使用正则表达式 + replace 方法 ~~~ function replaceXX(str) { // 替换:第一个参数:正则表达式 // \\d:数字 // /g:全局替换,如果不加只会替换第一个数字 return str.replace(/\d/g, '*') } ~~~ # 题7、如何将字符串转成数组? 答:使用 split 。 比如: ~~~ 'abc,bcd,des,cda'.split(',') ==> ['abc','bcd','des','cda'] ~~~ # 题8、如何将数组转成字符串? 答: 方法一、join ,优点:可以任意指定分隔符。 比如: ~~~ ['abc','bcd','des','cda'].join('-') ===> 'abc-bcd-des-cda' ~~~ 方法二、toString,默认是以 ,分隔 # 题9、如何合并两个字符串? 答: 方法一、使用 + 'abc'+'bcd' ==> abcbcd 方法二、使用 concat 'abc'.concat('bcd') ==> abcbcd # 题10、请说出至少 10 个操作字符串的方法? 答:split:转数组 join:转字符串 toString:转字符串 concat:连接 substring:从开始到结束下标截取 substr:从开始截取一定长度的字符串 indexOf:查看一个字符串中某一个子字符串的位置 replace :字符串替换,替换时也可以使用正则来匹配 match:用字符串去匹配一个正则 toUpperCase:转大写 toLowerCase:转小写 ![](https://img.kancloud.cn/84/8d/848de95a093e39661d693d4ae000cec4_1380x1506.png) # 题11、如何把一个字符串中所有的手机号码中的中间4位数字变成 ****? 答:'ab13455334444sd' ==> 'ab134****4444d' 实现思路:使用正则表达式 + replace 方法 ~~~ function replaceXX(str) { // 替换:第一个参数:正则表达式 // $1:正则中第 1 个括号中的内容(反向引用) // $2:正则中第 2 个括号中的内容(反向引用) // $3:正则中第 3 个括号中的内容(反向引用) return str.replace(/(1\d{2})(\d{4})(\d{4})/g, '$1****$3') } let a = 'abdf13344445555das' console.log(replaceXX(a)) ~~~ 方法二、 ~~~ let a = '13344445555' console.log( a.substr(0,3) + '****' + a.substr(-4) ) // 133****5555 ~~~ # 题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 str = "get-element-by-id" str = str.split("-").map((v,k)=>{ if(k>0) { return v.firstUpperCase() } else { return v } }).join() ~~~