Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.52/29: Рейтинг темы: голосов - 29, средняя оценка - 4.52
0 / 0 / 0
Регистрация: 26.04.2013
Сообщений: 26
1

Как перепреобразовать заглавные буквы в маленькие?

07.05.2013, 13:29. Просмотров 5872. Ответов 17
Метки нет (Все метки)

Например у меня есть переменные string str1; и string str2; Мне нужно написать такое условие которое бы проверяло является ли str1[0] заглавной буквой, если да то str2[0] - маленькая буква. Очень не хочется весь алфавит переписывать таким образом: if (str1[0] == 'А') str1[0] = 'а';

хотел узнать есть короткое решение данной задачи?
я новичок
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.05.2013, 13:29
Ответы с готовыми решениями:

Как преобразовать в строке все маленькие буквы в большие а большие в маленькие?
Дана строка .Преобразовать в ней все маленькие буквы в большие а большие в маленькие. Вот что я...

Заглавные буквы на маленькие
Наверное поднадоел, но все же, как написать то? нельзя использовать элементы массива, по моему...

Заглавные буквы - маленькие
Подскажите пожалуйста что это за глюк и как от этого избавится? Я пишу заглавными буквами а они...

Заменить в строке все заглавные буквы на прописные маленькие)
Возможно ли средствами PS Сделать замену всех заглавных букв на меленькие?

17
34 / 34 / 3
Регистрация: 12.10.2011
Сообщений: 175
07.05.2013, 13:35 2
C#
1
2
str1.ToLower()
str1.ToUpper()
значение методов, думаю, понятно?
если я не путаю с Ruby, шарп может и инвертировать регистр, но метод не помню(

//

оооо не, это я не по той теме написал, сорь
1
67 / 37 / 1
Регистрация: 09.11.2009
Сообщений: 391
07.05.2013, 13:41 3
Цитата Сообщение от Decces Посмотреть сообщение
Например у меня есть переменные string str1; и string str2; Мне нужно написать такое условие которое бы проверяло является ли str1[0] заглавной буквой, если да то str2[0] - маленькая буква. Очень не хочется весь алфавит переписывать таким образом: if (str1[0] == 'А') str1[0] = 'а';

хотел узнать есть короткое решение данной задачи?
я новичок
А зачем Вам делать цикл и проверять каждую букву?
напишите так:
C#
1
string str1 = str2.ToLower();
в строке str1 все буквы будут мальнькие.
1
48 / 48 / 11
Регистрация: 13.08.2012
Сообщений: 97
07.05.2013, 13:44 4
C#
1
2
if (str1.Substring(1, 1).ToUpper() == str1.Substring(1, 1))
      str2.Substring(1, 1).ToLower();
1
901 / 662 / 132
Регистрация: 01.03.2010
Сообщений: 1,243
07.05.2013, 15:25 5
Цитата Сообщение от Decces Посмотреть сообщение
if (str1[0] == 'А') str1[0] = 'а';
А вы и не сможете сделать str1[0] = 'а', даже если захотите. Тут доступ только для чтения.
0
16 / 16 / 4
Регистрация: 17.10.2012
Сообщений: 73
07.05.2013, 16:55 6
Попробовал написать с помощью цикла,вышло вот это. Знаю,что громоздко,хотелось бы спросить, а как исправить мой пример так,чтобы инвертировать регистр.
Кликните здесь для просмотра всего текста
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
string abc = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
            string str = Console.ReadLine();
            for (int i = 0; i < str.Length; i++)
 
                for (int j = 0; j < abc.Length; j++)
                    if (str[i] == abc[j] && j <= 26)
                    {
                        j = j + 26;
                        Console.Write(abc[j]);
                    }
                    else
                        if (str[i] == abc[j] && j > 26)
                        {
                            j = j - 26;
                            Console.Write(abc[j]);
                            break;
                        }
            
            Console.ReadKey();
0
221 / 221 / 38
Регистрация: 17.12.2010
Сообщений: 713
07.05.2013, 16:57 7
Цитата Сообщение от sithy Посмотреть сообщение
Попробовал написать с помощью цикла,вышло вот это. Знаю,что громоздко,хотелось бы спросить, а как исправить мой пример так,чтобы инвертировать регистр.
Кликните здесь для просмотра всего текста
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
string abc = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
            string str = Console.ReadLine();
            for (int i = 0; i < str.Length; i++)
 
                for (int j = 0; j < abc.Length; j++)
                    if (str[i] == abc[j] && j <= 26)
                    {
                        j = j + 26;
                        Console.Write(abc[j]);
                    }
                    else
                        if (str[i] == abc[j] && j > 26)
                        {
                            j = j - 26;
                            Console.Write(abc[j]);
                            break;
                        }
            
            Console.ReadKey();
посмотрите методы Char.IsUpper, Char.IsLower
0
16 / 16 / 4
Регистрация: 17.10.2012
Сообщений: 73
07.05.2013, 16:58 8
Aloir, ну,это я знаю,прошу посмотреть для моего примера
0
191 / 191 / 29
Регистрация: 03.12.2009
Сообщений: 853
07.05.2013, 17:00 9
Я бы сделал так:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
        private static void Main(string[] args)
        {
            string strInput = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
            StringBuilder sbOut = new StringBuilder();
            foreach (Char c in strInput.ToCharArray())
            {
                if (Char.IsLower(c))
                {
                    sbOut.Append(Char.ToUpper(c));
                }
                else
                {
                    sbOut.Append(Char.ToLower(c));
                }
            }
            Console.WriteLine(sbOut);
        }
0
656 / 526 / 137
Регистрация: 07.07.2011
Сообщений: 1,232
07.05.2013, 17:01 10
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
using System;
 
class CyberForum
{
    private static void Main()
    {
        string abc = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
        string result = string.Empty;
 
        for ( int i = 0; i < abc.Length; i++ )
            if ( char.IsUpper( abc[ i ] ) )
                result += char.ToLower( abc[ i ] );
            else
                result += char.ToUpper( abc[ i ] );
 
        Console.WriteLine( result );
        Console.ReadKey( true );
    }
}
1
191 / 191 / 29
Регистрация: 03.12.2009
Сообщений: 853
07.05.2013, 17:06 11
Ваш упрощённый способ
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
private static void Main(string[] args)
        {
            string abc = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
            string str = Console.ReadLine();
            for (int i = 0; i < str.Length; i++)
            {
                var index = abc.IndexOf(str[i]);
                if (index + 1 <= 26)
                {
                    Console.Write(abc[index+26]);
                }
                else
                {
                    Console.Write(abc[index-26]);
                }
            }
            Console.ReadKey();
        }
1
901 / 662 / 132
Регистрация: 01.03.2010
Сообщений: 1,243
07.05.2013, 19:40 12
Цитата Сообщение от da1z Посмотреть сообщение
Ваш упрощённый способ
Еще проще.
Пример для латиницы
C#
1
2
3
4
5
            StringBuilder strB = new StringBuilder(Console.ReadLine());
            if (strB[0] < 97) strB[0] = Convert.ToChar(strB[0] +32);
 
            string str = strB.ToString();
            Console.WriteLine(str);
0
Master of Orion
Эксперт .NET
6078 / 4934 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
07.05.2013, 22:52 13
Евгений В, то есть если там цирфы, плюсы, знаки препинания и прочее, получим белиберду

А я бы сделал ToLower() в одну строку и не парился бы а этими циклоизвратами.
0
656 / 526 / 137
Регистрация: 07.07.2011
Сообщений: 1,232
07.05.2013, 23:07 14
Psilon, дак ТСу нужно инвертировать строку "аБв" => "АбВ".

Добавлено через 2 минуты
Я думаю мой вариант вполне подходит под условие. Насчет отниманий, сразу можно откинуть, любые символы кроме букв определенной раскладки будут неверно отображаться.
0
Master of Orion
Эксперт .NET
6078 / 4934 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
07.05.2013, 23:13 15
Дмитрий3241, ну и в чем сложность? Если инвертировать строку, то
C#
1
2
3
4
var sb = new StringBuilder(s.Length, s.Length);
foreach(char c in s)
   sb.Append(char.IsUpper(c) ? char.ToLower(c) : char.ToUpper(c));
string result = sb.ToString();
или в одну строчку
C#
1
string result = new string(s.Select(c => char.IsUpper(c) ? char.ToLower(c) : char.ToUpper(c));
0
901 / 662 / 132
Регистрация: 01.03.2010
Сообщений: 1,243
07.05.2013, 23:21 16
Цитата Сообщение от Psilon Посмотреть сообщение
А я бы сделал ToLower() в одну строку и не парился бы
Это оптимальный вариант.

Я ответил на это
Цитата Сообщение от sithy Посмотреть сообщение
ну,это я знаю,прошу посмотреть для моего примера
Человеку интересно изучать. Пусть думает.
Еще на наши вопросы отвечать будет когда нибудь.
0
Танцы с бубном
67 / 68 / 26
Регистрация: 27.03.2013
Сообщений: 279
08.05.2013, 09:21 17
как то так:
C#
1
2
3
4
5
6
7
8
9
            string str1 = "Привет";
            string str2 = "Пока";
 
            string sUpper = str1.Substring(0,1).ToUpper();
 
            if (sUpper == str1.Substring(0,1))
            {
                textBox4.Text = str2.Substring(0, 1).ToLower();
            }
0
656 / 526 / 137
Регистрация: 07.07.2011
Сообщений: 1,232
08.05.2013, 10:44 18
Цитата Сообщение от Psilon Посмотреть сообщение
Дмитрий3241, ну и в чем сложность? Если инвертировать строку, то
Psilon, у меня нет никаких сложностей, если посмотреть выше то я сделал так же как и вы.
Я просто вас поправил.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.05.2013, 10:44

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

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

Ввести символьную строку и заменить все буквы «а» на буквы «б» и наоборот, как заглавные, так и строчные
1) Ввести символьную строку и заменить все буквы «а» на буквы «б» и наоборот, как заглавные, так и...

Массив: Выделить в отдельные массивы заглавные гласные и заглавные согласные буквы латинского алфавита
В исходном массиве символов, заполненном случайным образом символами с кодами в диапазоне от 21 до...

Поменять маленькие символы ‘a’ и ‘b’ на заглавные
Ввести с консоли строку символов произвольной длины (до 80 символов). По-менять в ней все маленькие...


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

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.