前端一个经典面试题,如何把字符串的大小取反(大写变小写,小写变大写),例如'Hello World' 变成'hELLO wORLD'
思路
第一步:获取字符串中所有的大小写字母,因为只有字母才能进行大小写转换,汉字不能进行转换;
第二步:使用正则表达式来判断每一个字母;
第三步:方法1:把所有的字母转换为大写后看和之前的是否一样,如果一样,之前的也是大写;
方法2:在ASCII表中找到大写字母的取值范围进行判断(65-90);
第四步:将代码取反;
需要使用的方法
replace()用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串;
toUpperCase() 方法用于把字符串转换为大写。
toLowerCase() 方法用于把字符串转换为小写。
代码
let str = 'Hello世界和平World!'
//str.replace(/[a-zA-Z]/g 通过正则表达式来捕获所有字母 content为捕获结果
str = str.replace(/[a-zA-Z]/g,function(content){
//方法一:content.toUpperCase()===content
//方法二:content.charCodeAt()>=65 && content.charCodeAt()<=90
//此段代码逻辑:将捕获的结果转化为大写字母与捕获结果来进行判断,若为true表示捕获的结果为大写字母,需要转化为小写字母,否则转为大写字母
return content.toUpperCase()===content?content.toLowerCase():content.toUpperCase()
});
console.log(str)