Я хочу сделать код, который преобразует прописные и строчные буквы в Javascript.конвертировать прописные и строчные буквы в javascript
Например, «Привет, переполнение стека». ----> 'hI, sTACK oVERFLOW'
Как это сделать?
Я хочу сделать код, который преобразует прописные и строчные буквы в Javascript.конвертировать прописные и строчные буквы в javascript
Например, «Привет, переполнение стека». ----> 'hI, sTACK oVERFLOW'
Как это сделать?
Вы могли бы работать над каждым символом, а затем преобразовывать его в нижнем регистре, если он находится в верхнем регистре, в верхний регистр, если он находится в нижнем регистре или принять его как, если это ни (если это запятая, двоеточие, и т.д.):
str = 'Hi, Stack Overflow.';
res = '';
for (var i = 0; i < str.length; ++i) {
c = str[i];
if (c == c.toUpperCase()) {
res += c.toLowerCase();
} else if (c == c.toLowerCase()) {
res += c.toUpperCase();
} else {
res += c;
}
}
См. Также этот ответ для более продвинутого решения: http://stackoverflow.com/a/38703925/1743938 –
Обычно это не считается мутированием строки напрямую (путем обращения к ее индексу). Обычно предпочтительнее преобразовывать его в массив (используя .split() без какого-либо параметра), затем перебирать массив и собирать строку с помощью .join(). Как идея. –
функция, которая будет делать это для вас:
function reverseCase(input) {
var output = []
for(var char in input) {
var character = input[char]
if(character == character.toUpperCase())
output.push(character.toLowerCase())
else
output.push(character.toUpperCase())
}
return output.join('')
}
Для меня эта функция вызывает TypeErrors. Вы уже проверили это? –
Да, у меня там была опечатка. http://codepen.io/LewisYearsley/pen/RGEzXA?editors=1010 – Lew
var hi = 'Hi, Stack Overflow.';
var hI = hi.split("");
for(var i=0;i<hI.length;i++){
if(hI[i] == hI[i].toLowerCase())hI[i] = hI[i].toUpperCase();
else if(hI[i] == hI[i].toUpperCase())hI[i] = hI[i].toLowerCase();
}
hI = hI.join("");
alert(hI);
//'hI, sTACK oVERFLOW'
var input = 'Hi, Stack Overflow.'
var arr = input.split(' ');
alert(arr);
var output = arr.map(function(elem){
return (elem[0].toLowerCase() + elem.substring(1,elem.length).toUpperCase());
});
alert(output.join());
Вы можете попробовать это простое решение с помощью map()
var a = 'Hi, Stack Overflow!'
var ans = a.split('').map(function(c){
return c === c.toUpperCase()
? c.toLowerCase()
: c.toUpperCase()
}).join('')
console.log(ans)
<!DOCTYPE html>
<html>
<head>
<title>hello</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
</head>
<body>
<script>
$(document).ready(function(){
var x = 'Hi, Stack Overflow.';
alert(caseAlter(x));
function caseAlter(txt){
var output = "";
for(var i = 0; i < txt.length; i++){
if(txt[i] == txt[i].toUpperCase()){
output += txt[i].toLowerCase();
}else{
output += txt[i].toUpperCase();
}
}
return output;
}
});
</script>
</body>
</html>
вы пытались что-то? –