fe-interview
                                
                                 fe-interview copied to clipboard
                                
                                    fe-interview copied to clipboard
                            
                            
                            
                        [js] 第5天 写一个把字符串大小写切换的方法
第5天 写一个把字符串大小写切换的方法
var reversal = function(str){ var newStr = ''; if(Object.prototype.toString.call(str).slice(8,-1) !== 'String'){ alert("请填写字符串") }else{ for(var i=0;i<str.length;i++){ newStr += ((str.charCodeAt(i)>96 && str.substr(i,1).toUpperCase()) || str.substr(i,1).toLowerCase()); } } return newStr; }
function caseConvert(str) {
  return str.split('').map(s => {
    const code = s.charCodeAt();
    if (code < 65 || code > 122 || code > 90 && code < 97) return s;
    
    if (code <= 90) {
      return String.fromCharCode(code + 32)
    } else {
      return String.fromCharCode(code - 32)
    }
  }).join('')
}
console.log(caseConvert('AbCdE')) // aBcDe 
function caseConvertEasy(str) {
  return str.split('').map(s => {
    if (s.charCodeAt() <= 90) {
      return s.toLowerCase()
    }
    return s.toUpperCase()
  }).join('')
}
console.log(caseConvertEasy('AbCxYz')) // aBcXyZ 
function caseConvert(str){
    return str.replace(/([a-z]*)([A-Z]*)/g, (m, s1, s2)=>{
	return `${s1.toUpperCase()}${s2.toLowerCase()}`
    })
}
caseConvert('AsA33322A2aa') //aSa33322a2AA
let str = 'aBcDeFgH'
let arr = []
for(let item of str) {
  if (item === item.toUpperCase()) {
    item = item.toLowerCase()
  } else {
    item = item.toUpperCase()
  }
  arr.push(item)
}
let newStr = arr.join('')
console.log(newStr)
// AbCdEfGh
function toggle(str) {
    var result = str.split('');
    result.forEach(function(e, i, a) {
        a[i] = e === e.toUpperCase() ? a[i] = a[i].toLowerCase() : a[i] = a[i].toUpperCase()
    });
    return result.join('');
}
var result = toggle('ifYouAreMyWorld');
console.log(result); // IFyOUaREmYwORLD
function caseTransform (str) {
	let transformed = '';
	for (let v of str) {
		const charCode = v.charCodeAt();
		if (charCode >= 97 && charCode <= 122) {
			transformed += v.toUpperCase();
		}
		else if (charCode >= 65 && charCode <= 90) {
			transformed += v.toLowerCase();
		}
		else {
			transformed += v;
		}
	}
	return transformed;
}
const convertCase = (str) =>
  str
    .split("")
    .map((s) => (/[A-Z]/.test(s) ? s.toLowerCase() : s.toUpperCase()))
    .join("");
console.log(convertCase('AbCdE'))
console.log(convertCase('aaabbbCCCDDDeeefff'))
console.log(convertCase('aBcDe'))
const upperOrlower = (str) => str.split('').reduce((acc, x)=> acc+= x == x.toLocaleUpperCase()? x.toLocaleLowerCase(): x.toLocaleUpperCase(), '')
    upperOrlower("what's THIS ?") // WHAT'S this ?
学习到了,借鉴到了;
function test(str) {
return str.replace(/([a-z])([A-Z])/g, (m, s1, s2) => {
return ${s1.toUpperCase()}${s2.toLowerCase()};
});
}
function test2(str) { let arr = []; for (let x of str) { if (x === x.toUpperCase()) { x = x.toLowerCase(); } else { x = x.toUpperCase(); } arr.push(x); } return arr.join(""); }
console.log(test("a6M3cH"));
const exchangeUpAndLow = str =>
  typeof str === 'string'
    ? str.replace(/[A-Za-z]/g, char =>
        char.charCodeAt(0) <= 90
          ? char.toLocaleLowerCase()
          : char.toLocaleUpperCase()
      )
    : str
function change2Char(str) { if(typeof str !== 'string'){ return '请输入字符串'; } return str.split('').map(function (item) { return /^[a-z]$/.test(item)?item.toUpperCase():item.toLowerCase(); }).join('');
function caseConvert(str) {
  return str.replace(/([a-z])?([A-Z]?)/g, function(m, $1, $2) {
    let s = ''
    s += $1 ? $1.toUpperCase() : ''
    s += $2 ? $2.toLowerCase() : ''
    return s
  })
}
caseConvert('asd__BBB_cDe')
function reverseCharCase ( string = `` ) {
  return Array.prototype.reduce.call(
    string,
    ( string, char ) =>
      string += `\u0040` < char && `\u005b` > char ?
        char.toLowerCase() :
        `\u0060` < char && `\u007b` > char ?
          char.toUpperCase() :
          char,
    ``,
  );
}
// 1.test() 方法用于检测一个字符串是否匹配某个模式,返回Boolean值 
// 2.toUpperCase() 转换成大写,toLowerCase()转换成小写
function changeStr(str){
  let ary = [];
  let newStr = '';
  if(!str||str === ''||typeof str !== 'string'){
    return false;
  }
  ary = str.split("");
  ary.map(item => {
    newStr += /[A-Z]/.test(item) ? item.toLowerCase() : item.toUpperCase();
  })
  console.log(newStr)
}
changeStr('aAbBcC') // 输出:AaBbCb
//$1、$2、...、$99与 regexp 中的第 1 到第 99 个子表达式相匹配的文本
//function(a,b,c)一共可以传入3个参数,第一个为匹配到的字符串,第二个为匹配字符串的起始位置,第三个为调用replace方法的字符串本身,(非全局匹配的情况下/g),下例为多组匹配,s1,s2分别对应$1,$2
function caseConvert(str){
  return str.replace(/([a-z]*)([A-Z]*)/g, function(m,s1,s2){
    return s1.toUpperCase() + s2.toLowerCase()
  })
}
console.log(caseConvert('aSa')) //AsA
  function caseConvert(sourceString) {
        if (typeof sourceString !== "string") {
          return ""
        }
        return sourceString.split("").reduce((previousValue, currentValue) => {
          let charCode = currentValue.charCodeAt()
          if (
            (charCode >= 65 && charCode <= 90) ||
            (charCode >= 97 && charCode <= 122)
          ) {
            if (charCode <= 90) {
              return previousValue + String.fromCharCode(charCode + 32)
            } else {
              return previousValue + String.fromCharCode(charCode - 32)
            }
          } else {
            return previousValue + currentValue
          }
        }, "")
      }
const change = str => {
    return [...str].map( letter => {
        return letter.toLowerCase() === letter ?
            letter.toUpperCase() : letter.toLowerCase();
    }).join("");
}
console.log(change("abd  ADSas")); // ABD  adsAS
刚开始没看清楚题,以为全大写全小写....
function stringToUpperLower(str) {
  return str.replace(/([a-z]*)([A-Z]*)/g, (all, $1, $2) => {
    return $1.toUpperCase() + $2.toLowerCase();
  })
}
console.log(stringToUpperLower('a0B1c2D3e4F5g'))
let str='aAc3_DD=sdLL' function tolawe(params) { return str.replace(/[a-zA-Z]/g,word=>{ let patt1 = new RegExp("[a-z]",'g'); if(patt1.test(word)){ return word.toUpperCase() } else{ return word.toLowerCase() } }) } let newstr=tolawe(str) console.log(newstr)//AaC3_dd=SDll
function sonversion (str) {
  return str.replace(/([A-Z]*)([a-z]*)/g,(match,$1,$2)=>{
    return `${$1.toLowerCase()}${$2.toUpperCase()}`
  })
}
console.log(sonversion('aaBBCCdd'))
function transUppLow(str) { if(typeof str !== 'string') { alert('请输入string类型') } var arr = str.split('') var newStr = '' arr.forEach(s => { s = s.toUpperCase() !== s ? s.toUpperCase() : s.toLowerCase() newStr+= s }); return newStr }
'aAc3_DD=sdLL'.replace(/([a-z]|[A-Z])/g, v => v.toLowerCase() === v ? v.toUpperCase() : v.toLowerCase())
/**
 * 写一个把字符串大小写切换的方法
 * @param {String} str 
 */
function toggleCase(str) {
  return str
    .split("")
    .map(item => /[A-Z]/.test(item) ? item.toLocaleLowerCase() : item.toLocaleUpperCase())
    .join("");
}
console.log(toggleCase("aa+-12BB")); // "AA+-12bb"
function convertCase(str){
  return str.split('').map(s=>s===s.toUpperCase()? s.toLowerCase():s.toUpperCase()).join('')
}
convertCase('aSd')  //AsD
function convertStr(str) {
  return [...str].map(char => char === char.toUpperCase() ? char.toLowerCase() : char.toUpperCase()).join('')
}
console.log(convertStr('aBc'))
// AbC
/**
 * @param {string} str
 * @return {string}
 */
function convert(str) {
  var res = "";
  for (var chr of str) {
    var code = chr.charCodeAt();
    if (code >= 65 && code <= 90) {
      code += 32;
    } else if (code >= 97 && code <= 122) {
      code -= 32;
    } else {
    }
    res += String.fromCharCode(code);
  }
  return res;
}
  function changeStr(str = 'abcQWE') {
        return str.split('').map(item => {
            return /[a-z]/.test(item) ? item.toUpperCase() : item.toLocaleLowerCase()
        }).join('')
    }
function caseConvert(str) { return str.replace(/([a-z])([A-Z])/g, function (str, sub1, sub2) { return sub1.toLocaleUpperCase() + sub2.toLocaleLowerCase(); })
//第5天 写一个把字符串大小写切换的方法
//for example: aBcDeFg => AbCdEfG
//"a".charCodeAt(0) 97
//"A".charCodeAt(0) 65
function toggleCase(str) {
  return str
    .split("")
    .map(c => {
      return c.charCodeAt(0) >= 97 ? c.toUpperCase() : c.toLowerCase();
    })
    .join("");
}
var str = "aBcDeFg";
console.log(toggleCase(str));
function sonversion (str) { return str.replace(/([A-Z]*)([a-z]*)/g,(match,$1,$2)=>{ return `${$1.toLowerCase()}${$2.toUpperCase()}` }) } console.log(sonversion('aaBBCCdd'))
如果用正则的话,这个比较好function函数被调用的次数要少。上面有个正则是 /([A-Z]?)([a-z]?)/g, 没有你这个/([A-Z]*)([a-z]*)/g效果好。
function fun(str) {
	let newStr = ''
	for (let i = 0; i < str.length; i++) {
		let newStr1 = str.substring(i, i + 1)
		if (newStr1 < 'A' || newStr1 > 'Z') {
			newStr += newStr1.toUpperCase()
		} else {
			newStr += newStr1.toLowerCase()
		}
	}
	return newStr
}
console.log(fun('AbCdefgASDASDsAASDq	uyqwugf'))