Чередование регистра

101
17 января 2022, 22:30

Всем привет, ребята помогите решить задачу. Суть, у меня есть строка, и мне нужно сделать так, что бы верхний регистр всегда менялся на нижний, а нижний на верхний. Пример было : HeLllO wOrrLd; Стало : hElLo WoRRld;

let str ='HeLlo WoRlD'; 
let str2 = ' '; 
 
for (let i = 0; i < str.length; i++) { 
if (str.match(/[A-Z]/g) && str.match(/[a-z]/g)) { 
  str2 = str2 + str.charAt(i).toLowerCase(); 
  str2 = str2 + str.charAt(i).toUpperCase(); 
} 
} console.log(str2);

Получаеться плохо, т. к. строки с разными регистрами накладываються друг на друга.

Сижу уже целый день, ни как не могу понять, буду рад за помощь и объяснение, заранее спасибо!

Answer 1

Вы в строке искали символы нижнего регистра и верхнего и независимо ни от чего добавляли и нижний регистр, и верхний. Бесмысленно.

let str ='HeLlo WoRlD'; 
let str2 = ''; 
 
for (let i = 0; i < str.length; i++) { 
  if (str[i].match(/[A-Z]/)) { 
    str2 += str[i].toLowerCase(); 
  }  
  else if (str[i].match(/[a-z]/)) { 
    str2 += str[i].toUpperCase(); 
  } 
  else {str2 += str[i]}; 
}  
console.log(str2);

Также подумайте над тем, что есть варианты эффективнее regexp.

Answer 2

console.log("HeLlo WoRlD".replace(/./g, c => { 
  var u = c.toUpperCase() 
  return c === u ? c.toLowerCase() : u 
}));

Answer 3

Если буквы только латинские:

console.log("HeLlo WoRlD".replace(/([a-z])|([A-Z])/g, (m,l,u) => u ? m.toLowerCase() : m.toUpperCase()));

READ ALSO
Следить за изменением в бд mysql

Следить за изменением в бд mysql

Нужно следить за изменением в бд, если есть изменение в таблице, то вывестиЯ делаю через ajax, но это нагрузка на бд

66
Как сделать пополнение текста в js?

Как сделать пополнение текста в js?

У меня есть таблицы, в одну вводиться отзыв и при отправке он выводиться на вторуюНо не могу понять как сделать так чтобы каждая отправка...

181
Как сделать раскрывающееся на всю страницу меню?

Как сделать раскрывающееся на всю страницу меню?

Как сделать меню как на изображении? При нажатии на бургер должен появится фон на всю страницу как на изображении и менюКак такое можно реализовать?

67