Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 25.07.2018
Сообщений: 5

ToCamelCase работает коряво

25.07.2018, 10:09. Показов 998. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
     public static string ToCamelCase(string str)
        {
            string result = string.Empty;
            string[] strings = str.Split(new string[] { "_", "-" }, StringSplitOptions.RemoveEmptyEntries);
            foreach (var word in strings)
            {
                if (word == strings.First()) { result += word; continue; }
                foreach (char ch in word)
            {
                    if (ch == word.ToLower().First()) { result += word.ToUpper().First(); continue; }
                    result += ch;
            }
            }
            return result;
        }
работает коряво, и не во всех случаях правильно, например:
Expected: "qpqmurgiyaHcjbatjgxjIwalqvaigy"
But was: "qpqmurgiyaHcjbatjgxjIwalqvaIgy
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
25.07.2018, 10:09
Ответы с готовыми решениями:

Коряво работает асинхронная передача и прием
Пишу клиент серверный чат.. все почти работает правильно... основная проблема в том что, если сервер посылает сообщение, то оно приходит...

if/else if коряво работает
Здарвствуйте, что-то неправило работает программа. думалось, что если времмы в формате hh:mm:ss введено корректно пишетса что правелон ...

Коряво работает сброс рандома
#include <iostream> #include <ctime> #include <cstdlib> using namespace std; //функция модуль double aabs(double a, double...

12
 Аватар для ViterAlex
8951 / 4863 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
25.07.2018, 13:14
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class Program
{
    static void Main(string[] args)
    {
 
        Console.WriteLine("мама МЫЛА РаМу".ToCamelCase());
    }
}
 
static class Helper
{
    internal static string ToCamelCase(this string text)
    {
        var ti = CultureInfo.InvariantCulture.TextInfo;
        text = ti.ToTitleCase(text.Replace("_", " ").Replace("-", " ").ToLower());
        text = $"{char.ToUpper(text[0])}{text.Substring(1)}";
        return text;
    }
}
0
Заблокирован
25.07.2018, 13:30
Цитата Сообщение от ViterAlex Посмотреть сообщение
internal static
Поинтересуюсь, зачем интернал?

Не по теме:

Маленький пук - классный ник.



Добавлено через 4 минуты
Кстати, ToCamelCase вроде как toCamelCase пишется(((.
0
 Аватар для ViterAlex
8951 / 4863 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
25.07.2018, 13:34
Цитата Сообщение от Моя говорить Посмотреть сообщение
зачем интернал?
Класс приватный, вне сборки не виден. А его методы должны быть видны в сборке → internal
Цитата Сообщение от Моя говорить Посмотреть сообщение
вроде как toCamelCase пишется
Ну делов-то, заменить ToUpper на ToLower
0
Заблокирован
25.07.2018, 13:48
Цитата Сообщение от ViterAlex Посмотреть сообщение
Класс приватный, вне сборки не виден. А его методы должны быть видны в сборке → internal
Может я немного отстал от технологий. Почему не private а internal в данном случае вы употребили?
internal, насколько я знаю для длл-ок подходит.
0
 Аватар для ViterAlex
8951 / 4863 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
25.07.2018, 14:03
Цитата Сообщение от Моя говорить Посмотреть сообщение
internal, насколько я знаю для длл-ок подходит.
с модификатором private член класса не будет виден вне этого класса. модификатор internal задаёт видимость элементов класса внутри сборки и не важно, чем именно эта сборка является: исполняемым файлом или библиотекой.
не нужно придумывать лишнего.
1
Заблокирован
25.07.2018, 14:15
Почему, не publik тогда(или protected)? (Организуйте ликбез для меня, я реально хочу подъучиться).
0
 Аватар для ViterAlex
8951 / 4863 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
25.07.2018, 14:40
Цитата Сообщение от Моя говорить Посмотреть сообщение
Почему, не publik
Потому что public нужно использовать, если класс или член класса должны быть доступны извне. Можно использовать и здесь, но, лично я считаю, что излишняя видимость ни к чему и стараюсь использовать минимально необходимую, чтобы соблюдать инкапсуляцию.
Цитата Сообщение от Моя говорить Посмотреть сообщение
или protected
protected вообще ни при чём: может быть, например, internal protected, т.е. видимость внутри сборки только для наследников. Извне для наследников не будет видно.
Цитата Сообщение от Моя говорить Посмотреть сообщение
я реально хочу подъучиться
Лучше Шилдта я всё равно не объясню
1
21 / 9 / 6
Регистрация: 10.11.2017
Сообщений: 148
27.07.2018, 10:20
Цитата Сообщение от ViterAlex Посмотреть сообщение
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine("мама МЫЛА РаМу".ToCamelCase());
    }
}
static class Helper
{
    internal static string ToCamelCase(this string text)
    {
        var ti = CultureInfo.InvariantCulture.TextInfo;
        text = ti.ToTitleCase(text.Replace("_", " ").Replace("-", " ").ToLower());
        text = $"{char.ToUpper(text[0])}{text.Substring(1)}";
        return text;
    }
}
Поинтересуюсь, чем ваш код отличается от кода ТС?
Если
Цитата Сообщение от Маленький пук Посмотреть сообщение
работает коряво, и не во всех случаях правильно, например:
Expected: "qpqmurgiyaHcjbatjgxjIwalqvaigy"
But was: "qpqmurgiyaHcjbatjgxjIwalqvaIgy
указанной проблемы он не решает?
0
02.08.2018, 19:21

Не по теме:


Цитата Сообщение от Моя ViterAlex
Цитата Сообщение от Моя говорить
Ну делов-то, заменить ToUpper на ToLower
Не о том речь - верблюжья аннотация предполагает первое слово с маленькой, все последующие с большой.

Вообще, спасибо за ликбез, ViterAlex.

0
Эксперт JS
6496 / 3907 / 2006
Регистрация: 14.06.2018
Сообщений: 6,781
03.08.2018, 14:04
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
        /// <summary>
        /// Составное слово без пробелов разделяется знаками тире и нижним подчеркиванием.
        /// Нужно, чтобы первый элемент начинался со строчной буквы, 
        /// все остальные элементы начинались с прописной буквы.
        /// И тире с нижним подчёркиванием убрать, соединив все элементы в одно слово.
        /// </summary>
        static void Question2278493()
        {
            string ToCamelCase(string s)
            {
                var pattern = @"[_-]*(?<1>[^\s_-]+)([_-]+(?<2>[^\s_-]*))*";
                var regex = new Regex(pattern, RegexOptions.ExplicitCapture);
 
                return regex.Replace(s, m =>
                {
                    var result = String.Empty;
 
                    var first = m.Groups[1].Value;
                    result = first.Substring(0, 1).ToLower() + first.Substring(1);
 
                    foreach (Capture item in m.Groups[2].Captures)
                    {
                        var next = item.Value;
                        result += next.Substring(0, 1).ToUpper() + next.Substring(1);
                    }
                    return result;
                });
            }
 
            //var str = "";
            //var str = "М_ж-________________к";
            var str = "Москва-Авиамоторная_кв2";
 
            Console.WriteLine(ToCamelCase(str));
        }
Добавлено через 3 минуты
Хотя конечным автоматом по размеру кода то же на то же )))
0
22 / 20 / 13
Регистрация: 19.07.2015
Сообщений: 99
03.08.2018, 15:55
ViterAlex, если класс internal, то он в любом случае не будет виден вне сборки и метод можно сделать публичным.
0
Эксперт JS
6496 / 3907 / 2006
Регистрация: 14.06.2018
Сообщений: 6,781
03.08.2018, 19:06
Как обычно, короткий способ подсказали пхпшники:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
        /// <summary>
        /// Составное слово разделяется знаками тире и нижним подчеркиванием.
        /// Нужно, чтобы первый элемент начинался со строчной буквы, 
        /// все остальные элементы начинались с прописной буквы.
        /// И тире с нижним подчёркиванием убрать, соединив все элементы в одно слово.
        /// PHP:
        /// $parts = explode('-', $string);
        /// $parts = array_map('ucfirst', $parts);
        /// $string = lcfirst(implode('', $parts));
        /// </summary>
        static void Question2278493_2()
        {
            string ToCamelCase(string s) =>
                String.Concat(s.Split(new string[] { "_", "-" }, StringSplitOptions.RemoveEmptyEntries).Select(
                    (e, i) =>
                        i == 0 ? e.Substring(0, 1).ToLower() + e.Substring(1)
                        : e.Substring(0, 1).ToUpper() + e.Substring(1)
                    ));
 
 
            //var str = "";
            //var str = "М_ж-________________к";
            var str = "Москва-Авиамоторная_кв2";
 
            Console.WriteLine(ToCamelCase(str));
        }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
03.08.2018, 19:06
Помогаю со студенческими работами здесь

Коряво работает консоль code::blocks
Почему при вводе с клавы нужно обязательно ввести еще одно левое число, чтоб прога выдала результат? Пробовал в DEV C++, то же самое.

Предварительный просмотр и печать работает, но коряво
Добрый день! Я не программист, но увы надо Написал прогу - печатает этикетки с s/n. Печать работает. Работает предварительный...

Коряво работает перебор писем в OutLook
Помогите пожалуйста ! Есть скрипт, который помечает все непрочитанные письма в общей папке Outlook как прочитанные. Sub AO31() ...

Коряво заносит в бд дату
Привет всем. У меня почему то при выборе некоторых месяцев (к примеру декабрь) и соответствующей ему день 31 после занесения в бд...

коряво выводит сайт
Здраствуйте.. такая проблема выводит неправильно таблицу с названиями уроков....дизайн как бы лломается .... подскажите что исправить?...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru