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

Сортировка цифро-буквенных элементов

16.11.2023, 12:05. Показов 1005. Ответов 5

Студворк — интернет-сервис помощи студентам
Как быстро отсортировать цифро-буквенные элементы, например С1,С10,С26,С2?
Array.Sort() сортирует только по первым цифрам С1,С10, С2,С26
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
16.11.2023, 12:05
Ответы с готовыми решениями:

Количество слов в которых встречаются два одинаковых цифро-буквенных символа подряд
Задача стоит такая: "В заданном тексте подсчитать количество слов в которых встречаются два одинаковых цифро-буквенных символа подряд...

Сортировка массива из буквенных слов
В массиве SL(20), состоящем из 5 буквенных слов, выбрать те из них, которые содержат гласную в окончании. Остальные слова переписать в...

Цифро-аналоговый преобразователь
Здравствуйте! Мой вопрос отностися к работе с ЦАП. ЦАП может воспроизводить только форму сигнала, но, насколько я понял, для получения...

5
 Аватар для iLinks
800 / 458 / 237
Регистрация: 03.01.2017
Сообщений: 1,339
16.11.2023, 12:22
Лучший ответ Сообщение было отмечено sbgh как решение

Решение

Что-то типо того
C#
1
2
var arr = "С1,С10,С26,С2".Split(',').OrderBy(s=> s).ToArray();
Array.Sort(arr, (a, b) => int.Parse(string.Concat(a.Where(c => char.IsDigit(c)))) - int.Parse(string.Concat(b.Where(c => char.IsDigit(c)))));
1
 Аватар для Doomov
1056 / 335 / 119
Регистрация: 28.11.2020
Сообщений: 1,066
16.11.2023, 12:34
Лучший ответ Сообщение было отмечено sbgh как решение

Решение

Через класс...
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
36
37
38
public class CustomSort : IComparer<string>
{
    public int Compare (string x, string y)
    {
        // Отделяем буквы и числа от элементов x и y
        string xLetters = GetLetters (x);
        string yLetters = GetLetters (y);
 
        int lettersComparison = string.Compare (xLetters, yLetters);
        if (lettersComparison != 0)
        {
            // Если буквы отличаются, возвращаем результат
            return lettersComparison;
        }
 
        int xNumber = GetNumber (x);
        int yNumber = GetNumber (y);
 
        // Сравниваем числа
        return xNumber.CompareTo (yNumber);
    }
    // GetLetters используются для извлечения букв из элементов 
    // их строкового представления, чтобы выполнить сравнение.
    private string GetLetters (string input)
    {
        return new string (Array.FindAll (input.ToCharArray(), char.IsLetter));
    }
    
    // GetNumber используются для извлечения чисел из элементов 
    // их строкового представления, чтобы выполнить сравнение.
    private int GetNumber (string input)
    {
        string numberString = new string (Array.FindAll (input.ToCharArray(), char.IsDigit));
        int number = 0;
        int.TryParse (numberString, out number);
        return number;
    }
}
В проге...
C#
1
2
3
    List<string> arrLst = new List<string> { "С1", "С10", "С26", "С2", "С3", "С02" };
    arrLst.Sort (new CustomSort());
    Console.WriteLine (String.Join(", ", arrLst));
Как то так...
iLinks, Вариант через Linq мне больше нравиться
1
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18302 / 14226 / 5368
Регистрация: 17.03.2014
Сообщений: 28,900
Записей в блоге: 1
16.11.2023, 12:41
sbgh, если формат строки всегда Буква + Число, то вот так можно:
C#
1
Array.Sort(arr, (a,b) => int.Parse(a.AsSpan().Slice(1)).CompareTo(int.Parse(b.AsSpan().Slice(1))));
2
 Аватар для iLinks
800 / 458 / 237
Регистрация: 03.01.2017
Сообщений: 1,339
16.11.2023, 14:22
Цитата Сообщение от OwenGlendower Посмотреть сообщение
C#
1
a.AsSpan().Slice(1)
Можно кст просто a.AsSpan(1)
1
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18302 / 14226 / 5368
Регистрация: 17.03.2014
Сообщений: 28,900
Записей в блоге: 1
16.11.2023, 14:50
iLinks, спасибо. Упустил что-то эту перегрузку. С ней еще короче, и главное эффективнее, получается.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
16.11.2023, 14:50
Помогаю со студенческими работами здесь

Цифро-аналоговый преобразователь
Младшие разряды ЦАП создают только шум. Я с микроконтроллера stm32 хочу проиграть запись голоса, для этого записал wav файл с частотой...

Буквенно - цифро - знаковый вариант
Помогите плиз разобраца не понимаю в этом ничего Cимволов Буквенно - цифровой вариант Буквенно - цифро -...

Аналогово-цифровой и цифро-аналоговый преобразователь
привет! Сегодня я бы хотел узнать как устроен аналогово цифровой и цифро аналоговый преобразователь? ...

Модификация цифро-буквенного идентификатора видео
Здравствуйте! Помогите решить задачу: Переношу видеогалерею на новый компонент. Имеется столбец таблицы remote_id (см. скрин 1) с...

8.3: Как получить цифро-буквенное обозначение Ссылки ?
Для целей внутр. контроля хочу получить из ссылки ее буквальное цифро-буквенное обозначение - как это сделать ? И еще, если использовать...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных через динамический список в справочнике
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Функция заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru