Форум программистов, компьютерный форум, киберфорум
JavaScript для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.72/140: Рейтинг темы: голосов - 140, средняя оценка - 4.72
4 / 4 / 0
Регистрация: 04.11.2020
Сообщений: 41

Замена букв нижнего регистра на верхний и наоборот

04.11.2020, 13:15. Показов 27267. Ответов 17
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день. Нужна помощь.
Есть задание, в котором нужно в строке найти слова с большой буквы, и только в этих словах заменить большие на маленькие и маленькие на большие.
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
let string  = 'hello MY name is JavaScript and I like your code styLe'; 
let result = replaceLetter(string);
 
function replaceLetter(item) {
    let letter = item.toUpperCase().split('');
    for (let i = 0; i < letter.length; i++) {
      if (letter[i] == item[i])
        letter[i] = letter[i].toLowerCase();
    }
    return letter.join("");
  }
 
  console.log(result);
Это код, меняет все буквы. что переделать не пойму. Возможно сделать через .replace(), .map() или функции.
Заранее спасибо за помощь.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
04.11.2020, 13:15
Ответы с готовыми решениями:

Перевод из нижнего регистра в верхний
Я где-то накосячил. Код: &lt;html&gt; &lt;head&gt; &lt;script type=&quot;text/javascript&quot;&gt; function upcase() { var str =...

Замена нижнего регистра литер русского языка, вводимых с клавиатуры, на верхний регистр
Для программы необходимо реализовать замену нижнего регистра литер русского языка вводимых с клавиатуры на верхний регистр.Подскажите кто...

Выполнить перевод всех символов этой строки из верхнего регистра в нижний, а из нижнего регистра в верхний
1. Ввести множество, запись или строку с помощью клавиатуры. 2. Вывести на экран монитора исходную запись, множество или строку. 3....

17
Эксперт JSЭксперт HTML/CSS
2151 / 1496 / 651
Регистрация: 16.04.2016
Сообщений: 3,696
04.11.2020, 13:27
seven8959, как вариант -
JavaScript
1
2
// to console
`hello MY name is JavaScript and I like your code styLe`.replace(/[A-ZА-Я]+/gm, match => match.toLowerCase());
1
4 / 4 / 0
Регистрация: 04.11.2020
Сообщений: 41
04.11.2020, 13:37  [ТС]
Qwerty_Wasd, Спасибо за ответ, но это не то.
Нужно в словах в которых есть большие буквы, их заменить на маленькие, и в этих же словах маленькие поменять на большие.
Например: JavaScript // jAVAsCRIPT
1
Эксперт JS
 Аватар для DrType
6553 / 3624 / 1075
Регистрация: 07.09.2019
Сообщений: 5,877
Записей в блоге: 1
04.11.2020, 14:14
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
console.log(
  "hello MY name is JavaScript and I like your code styLe".replace(
    /[\S]*/g,
    (w) =>
      /^[A-Z]/.test(w)
        ? w
            .split("")
            .map((l) =>
              l.toUpperCase() == l ? l.toLowerCase() : l.toUpperCase()
            )
            .join("")
        : w
  )
);
1
4 / 4 / 0
Регистрация: 04.11.2020
Сообщений: 41
04.11.2020, 14:25  [ТС]
DrType, Почти но не изменяет последнее слово.

JavaScript
1
2
let string  = 'hello MY name is JavaScript and I like your code styLe'; 
string.split(' ').map(word => word.match(reg) ? char(word) : word).join(' ');
Вот как бы есть первая функция которая должна возвращать слова в которых есть большая буква,
а потом нужно написать еще функцию, которая будет в этих словах менять буквы.
2
Эксперт JS
 Аватар для DrType
6553 / 3624 / 1075
Регистрация: 07.09.2019
Сообщений: 5,877
Записей в блоге: 1
04.11.2020, 14:32
seven8959, изменять следует слова, начинающиеся с прописной буквы, или слова, содержащие прописные буквы?
0
4 / 4 / 0
Регистрация: 04.11.2020
Сообщений: 41
04.11.2020, 14:34  [ТС]
Или можно еще вот так, но тоже не работает
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
let string = ('hello MY name is JavaScript and I like your code styLe.');
 
let result = string.replace(/(([A-Za-z])+([a-z]))*([a-z]*[A-Z]+[a-z]*)/g, function replaceLetter (letter) {
  if(letter === letter.toUpperCase()) {
    for(let i=0; i = letter.toUpperCase(); i++){
      letter = letter.toLowerCase();
    }
    return letter;
  }
  
  else {
    for(let i=0; i = letter.toLowerCase(); i++) {
      letter = letter.toUpperCase();
    }
    return letter;
  }
})
 
console.log(result);
Добавлено через 1 минуту
DrType,
изменять нужно слова содержащие прописные буквы
0
Эксперт JS
 Аватар для DrType
6553 / 3624 / 1075
Регистрация: 07.09.2019
Сообщений: 5,877
Записей в блоге: 1
04.11.2020, 14:40
Лучший ответ Сообщение было отмечено seven8959 как решение

Решение

Тогда в моём неуклюжем варианте в строчке 5 следует
JavaScript
5
  /[A-Z]/.test(w)
Но должно существовать более простое решение...
1
4 / 4 / 0
Регистрация: 04.11.2020
Сообщений: 41
04.11.2020, 14:44  [ТС]
DrType, Так работает, спасибо.
Но как бы мне это перевести либо в этот вариант:
JavaScript
1
2
let string  = 'hello MY name is JavaScript and I like your code styLe'; 
string.split(' ').map(word => word.match(reg) ? char(word) : word).join(' ');
Либо в этот:

JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
let string = ('hello MY name is JavaScript and I like your code styLe.');
 
let result = string.replace(/(([A-Za-z])+([a-z]))*([a-z]*[A-Z]+[a-z]*)/g, function replaceLetter (letter) {
  if(letter === letter.toUpperCase()) {
    for(let i=0; i = letter.toUpperCase(); i++){
      letter = letter.toLowerCase();
    }
    return letter;
  }
  
  else {
    for(let i=0; i = letter.toLowerCase(); i++) {
      letter = letter.toUpperCase();
    }
    return letter;
  }
})
 
console.log(result);
0
Эксперт JS
6496 / 3907 / 2006
Регистрация: 14.06.2018
Сообщений: 6,781
04.11.2020, 15:02
Здравствуйте.
Вариант с циклом:
JavaScript
1
2
3
4
5
6
7
        function replaceLetter(str) {
            let result = "";
            for (let c of str)
                result += c === c.toUpperCase() ? c.toLowerCase() : c.toUpperCase();
 
            return result;
        }
Вариант с методами массива:
JavaScript
1
2
3
4
5
6
        const replaceLetter = str => [...str].reduce(
            (r, c) => r + (c === c.toUpperCase() ? c.toLowerCase() : c.toUpperCase()), "");
            
        let string = 'hello MY name is JavaScript and I like your code styLe';
        let result = replaceLetter(string);
        console.log(result);
Добавлено через 3 минуты
Вариант с простейшим циклом for i:
JavaScript
1
2
3
4
5
6
7
8
        function replaceLetter(str) {
            let result = "";
            for (let i = 0; i < str.length; i++) {
                let c = str[i];
                result += c === c.toUpperCase() ? c.toLowerCase() : c.toUpperCase();
            }
            return result;
        }
Добавлено через 10 минут
Вариант с map():
JavaScript
1
2
        const replaceLetter = str => [...str].map(
            c => c === c.toUpperCase() ? c.toLowerCase() : c.toUpperCase()).join("");
1
4 / 4 / 0
Регистрация: 04.11.2020
Сообщений: 41
04.11.2020, 15:09  [ТС]
amr-now, Спасибо, но тоже не то.
Меняет все слова, а должен менять только те в которых есть большие буквы, остальные остаются без изменений.
0
Эксперт JS
6496 / 3907 / 2006
Регистрация: 14.06.2018
Сообщений: 6,781
04.11.2020, 15:37
Лучший ответ Сообщение было отмечено seven8959 как решение

Решение

seven8959, сорри, не полностью прочитал.
Тогда все те функции можно переименовать в innerReplace(),
и сделаем основную функцию словодробилку, использующую innerReplace():
JavaScript
1
2
        const replaceLetter = str => str.replace(/\S+/g,
            m => [...m].some(c => c === c.toUpperCase()) ? innerReplace(m) : m);
Добавлено через 12 минут
Вот вариант, который буквально ищет большие буквы любого алфавита мира, если слова могут состоять из цифр:
JavaScript
1
2
        const replaceLetter = str => str.replace(/\S+/g,
            m => /\p{Lu}/u.test(m) ? innerReplace(m) : m);
Опять же, мы не знаем, что такое слово.
Здесь рассмотрен простейший случай - разделение пробельными символами.
1
4 / 4 / 0
Регистрация: 04.11.2020
Сообщений: 41
04.11.2020, 15:37  [ТС]
amr-now, Спасибо большое, так работает
Блин почему же это так тяжело(((((

PS. Всем спасибо за помощь.
0
04.11.2020, 15:38

Не по теме:

seven8959, программирование - одна из самых сложных профессий вообще-то.

0
04.11.2020, 15:50  [ТС]

Не по теме:

amr-now, Вот Вы начинали изучать js, тоже ничего не понимали вначале?
Я иногда элементарного не пойму. Вот Вы код написали, а я на него смотрю, и понимаю, что я бы так не додумался,
и вообще не понимаю, что к чему там. Как он отдельно букву отделяет, как он ее меняет, и потом повторно не изменяет, короче жуть.

0
04.11.2020, 16:31

Не по теме:

seven8959,

Цитата Сообщение от seven8959 Посмотреть сообщение
Нужно в словах в которых есть большие буквы, их заменить на маленькие, и в этих же словах маленькие поменять на большие.
да точно сорри. поторопился и не вник до конца. Прошу прощения.

0
04.11.2020, 17:05

Не по теме:

seven8959,
Что нужно выучить для задачи: "Есть задание, в котором нужно в строке найти слова с большой буквы, и только в этих словах заменить большие на маленькие и маленькие на большие.":

Строки: https://learn.javascript.ru/string
Стрелочные функции: https://learn.javascript.ru/arrow-functions-basics
Методы массивов: https://learn.javascript.ru/array-methods
Регулярные выражения: https://learn.javascript.ru/regexp-introduction (Но там надо по-хорошему весь раздел регулярных выражений читать)
----
В принципе можно без регулярки порезать строку на слова с помощью split(). Тема регулярных выражений в данной задаче не очень нужна.

0
04.11.2020, 17:19  [ТС]

Не по теме:

amr-now, Спасибо.

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
04.11.2020, 17:19
Помогаю со студенческими работами здесь

Из нижнего регистра в верхний
Ассемблер не знаю, сделайте пожалуйста программку : Задана строка &quot;aSdFgh&quot; , нужно чтобы получилась &quot;ASDFGH&quot; и вывелась на...

Буква из нижнего регистра в верхний
добрый день, цель задачи: Преобразование букв нижнего регистра в верхний регистр, используя неконстантный указатель на неконстантные...

Преобразование нижнего регистра в верхний
пожалуйста помогите написать процедуру для преобразования букв нижнего регистра (a-z) в верхний регистр (A-Z). Никакие другие символы,...

Символы из нижнего регистра перевести в верхний
Приветствую. Нужно символы из нижнего регистра перевести в верхний. Вот сама программа (которую можно не смотреть): #include...

Сделать преобразование нижнего регистра в верхний
Составить программу для обработки символьных данных в соответствии задачи: Ввести с клавиатуры предложение. Сделать преобразование нижнего...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru