• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о форуме и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Инкрементирование строки

  • Автор темы Автор темы Filberd
  • Дата начала Дата начала

Filberd

Ученик
Почётный участник
Регистрация
17 Мар 2012
Сообщения
141
Реакции
1
Баллы
0
Инкрементирование строки

Всем привет. Можете помочь написать метод на C# Инкриминирующий строку, принимающую в качестве аргумента в виде массива типа char. Пример результата:
00000007 - 00000008
SVA00001 - SVA00002
 
- откусить первые буквы (и запомнить их куда нить), оставив только цифры
- по длине оставшегося куска определить макс.число (для пятицифирного куска макс число "99999") и длину куска (например, 5 цифр)
- перевести кусок в число
- увеличить число на 1
- сравнить: если полученное число больше макс.числа, то обнулить число
- перевести число в строку
- докидать слева необходимое количество нулей (т.е. 99 станет 00099)
- докидать слева изначальную приставку если она была, для "00099" станет "SVA00099"
 
Можно пойти немного другим путём. Каждую строку обработать так:
1. Находим последний символ.
2. Если он цифровой, то
2.1. делаем инкремент, если получилось меньше 10, то всё, заканчиваем, иначе 9 меняем на 0 и п.3.
2.2. Иначе символ не цифровой, заканчиваем.
3. переходим на предыдущий символ, делаем с ним то же самое, что и в п.2

Я не спец по С#, но как мне кажется, так проще. И это позволяет обрабатывать строки любой длины и не бояться того, что при переводе строк в числа будет выход за диапазон.
 
Спасибо, буду реализовывать
 
Назад
Сверху