fe-interview icon indicating copy to clipboard operation
fe-interview copied to clipboard

[js] 第5天 写一个把字符串大小写切换的方法

Open haizhilin2013 opened this issue 6 years ago • 83 comments

第5天 写一个把字符串大小写切换的方法

haizhilin2013 avatar Apr 20 '19 21:04 haizhilin2013

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; }

undefinedYu avatar Apr 27 '19 05:04 undefinedYu

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 

linghucq1 avatar May 08 '19 08:05 linghucq1

function caseConvert(str){
    return str.replace(/([a-z]*)([A-Z]*)/g, (m, s1, s2)=>{
	return `${s1.toUpperCase()}${s2.toLowerCase()}`
    })
}
caseConvert('AsA33322A2aa') //aSa33322a2AA

lantian1024 avatar May 15 '19 10:05 lantian1024

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

fuiiiiiii avatar May 22 '19 09:05 fuiiiiiii

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

likeke1997 avatar Jun 05 '19 08:06 likeke1997

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;
}

MartinsYong avatar Jun 21 '19 09:06 MartinsYong

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'))

Konata9 avatar Jul 02 '19 01:07 Konata9

const upperOrlower = (str) => str.split('').reduce((acc, x)=> acc+= x == x.toLocaleUpperCase()? x.toLocaleLowerCase(): x.toLocaleUpperCase(), '')
    upperOrlower("what's THIS ?") // WHAT'S this ?

Azathoth-H avatar Jul 12 '19 07:07 Azathoth-H

学习到了,借鉴到了;

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"));

seho-dev avatar Jul 14 '19 07:07 seho-dev

const exchangeUpAndLow = str =>
  typeof str === 'string'
    ? str.replace(/[A-Za-z]/g, char =>
        char.charCodeAt(0) <= 90
          ? char.toLocaleLowerCase()
          : char.toLocaleUpperCase()
      )
    : str

shufangyi avatar Jul 18 '19 03:07 shufangyi

function change2Char(str) {
  if(typeof str !== 'string'){
    return '请输入字符串';
   }
   return str.split('').map(function (item) {
       return /^[a-z]$/.test(item)?item.toUpperCase():item.toLowerCase();
   }).join('');

wyx2014 avatar Jul 24 '19 08:07 wyx2014

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')

gu-xionghong avatar Jul 25 '19 08:07 gu-xionghong

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,
    ``,
  );
}

IanSun avatar Jul 26 '19 08:07 IanSun

// 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

wsb260 avatar Jul 31 '19 05:07 wsb260

  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
          }
        }, "")
      }

lkkwxy avatar Aug 20 '19 09:08 lkkwxy

const change = str => {
    return [...str].map( letter => {
        return letter.toLowerCase() === letter ?
            letter.toUpperCase() : letter.toLowerCase();
    }).join("");
}
console.log(change("abd  ADSas")); // ABD  adsAS

刚开始没看清楚题,以为全大写全小写....

J1nvey avatar Sep 03 '19 01:09 J1nvey

function stringToUpperLower(str) {
  return str.replace(/([a-z]*)([A-Z]*)/g, (all, $1, $2) => {
    return $1.toUpperCase() + $2.toLowerCase();
  })
}
console.log(stringToUpperLower('a0B1c2D3e4F5g'))

JJL-SH avatar Sep 05 '19 08:09 JJL-SH

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

yaoyujian avatar Sep 08 '19 14:09 yaoyujian

function sonversion (str) {
  return str.replace(/([A-Z]*)([a-z]*)/g,(match,$1,$2)=>{
    return `${$1.toLowerCase()}${$2.toUpperCase()}`
  })
}

console.log(sonversion('aaBBCCdd'))

ZindexYG avatar Sep 10 '19 10:09 ZindexYG

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 }

vanstline avatar Sep 22 '19 09:09 vanstline

'aAc3_DD=sdLL'.replace(/([a-z]|[A-Z])/g, v => v.toLowerCase() === v ? v.toUpperCase() : v.toLowerCase())

klren0312 avatar Sep 23 '19 08:09 klren0312

/**
 * 写一个把字符串大小写切换的方法
 * @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"

tianfeng65 avatar Sep 23 '19 10:09 tianfeng65

function convertCase(str){
  return str.split('').map(s=>s===s.toUpperCase()? s.toLowerCase():s.toUpperCase()).join('')
}
convertCase('aSd')  //AsD

weizhanzhan avatar Sep 25 '19 03:09 weizhanzhan

function convertStr(str) {
  return [...str].map(char => char === char.toUpperCase() ? char.toLowerCase() : char.toUpperCase()).join('')
}

console.log(convertStr('aBc'))
// AbC


diandianzd avatar Oct 12 '19 01:10 diandianzd

/**
 * @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;
}

0x3c avatar Oct 15 '19 05:10 0x3c

  function changeStr(str = 'abcQWE') {
        return str.split('').map(item => {
            return /[a-z]/.test(item) ? item.toUpperCase() : item.toLocaleLowerCase()
        }).join('')
    }

13714273163 avatar Nov 29 '19 09:11 13714273163

function caseConvert(str) { return str.replace(/([a-z])([A-Z])/g, function (str, sub1, sub2) { return sub1.toLocaleUpperCase() + sub2.toLocaleLowerCase(); })

crazyming9528 avatar Dec 17 '19 07:12 crazyming9528

//第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));

YeChang avatar Dec 22 '19 07:12 YeChang

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效果好。

kruzabc avatar Dec 23 '19 03:12 kruzabc

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'))

qq814927478 avatar Jan 02 '20 06:01 qq814927478