powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Инкрементирование строки
25 сообщений из 105, страница 1 из 5
Инкрементирование строки
    #39376290
Slant-shadow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет. Можете помочь написать метод Инкриминирующий строку, принимающую в качестве аргумента в виде массива типа char. Пример результата:
00000007 - 00000008
SVA00001 - SVA00002
...
Рейтинг: 0 / 0
Инкрементирование строки
    #39376292
Фотография Нахлобуч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Slant-shadow,

Самостоятельные попытки были?
...
Рейтинг: 0 / 0
Инкрементирование строки
    #39376294
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Slant-shadowИнкриминирующий
кто что кому инкриминирует?
прокурор дело шьёт?
...
Рейтинг: 0 / 0
Инкрементирование строки
    #39376304
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Slant-shadowМожете помочь написать метод Инкриминирующий строку

Давай свою строку и в чём там её надо обвинить
...
Рейтинг: 0 / 0
Инкрементирование строки
    #39376349
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Придумай и словами алгоритм проговори и сразу поймешь как решать. Элементарная задача.
...
Рейтинг: 0 / 0
Инкрементирование строки
    #39376364
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилSlant-shadowИнкриминирующий
кто что кому инкриминирует?
прокурор дело шьёт?
Методу инкриминируется строка. Т.е. метод криминальную строку принял и не сообщил куда следует. Что непонятного? Пакет Яровой в действии
...
Рейтинг: 0 / 0
Инкрементирование строки
    #39376481
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T,

не понял, что хочет автор.

если нужно инкрементировать char cимвол строки, то нужно знать 3 вещи:
а) строка это массив символов (char[])
б) 1 символ занимает 2 байта
в) Для получения кода символа можно использовать Convert.ToInt16(char), для получения символа из кода Convert.ToChar(short)


Если нужно увеличение числа в строке, то тут нужно определиться с тем, какого вида может быть строка, каким образом вы будите извлекать число из строки и как потом формировать на основе этого числа новую строку.
Для этого стоит посмотреть в сторону класса Regex

Дерзайте, передавайте привед преподавателю )
...
Рейтинг: 0 / 0
Инкрементирование строки
    #39376504
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman Mejtesесли нужно инкрементировать char cимвол строки, то нужно знать 3 вещи:
а) строка это массив символов (char[])
б) 1 символ занимает 2 байта
в) Для получения кода символа можно использовать Convert.ToInt16(char), для получения символа из кода Convert.ToChar(short)

Достаточно знать первое и что char можно использовать как числовой тип
Код: c#
1.
2.
3.
4.
char c = '5';
c++;
if(c >= '0' && c <= '9') 
...
...
Рейтинг: 0 / 0
Инкрементирование строки
    #39376509
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T,

Охренеть, вот это сила хрустального шара, так вы поняли чего хочет ТС?
...
Рейтинг: 0 / 0
Инкрементирование строки
    #39376510
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как я понял есть некий идентификатор в виде строки с "числом" на конце, формат "ССССЦЦЦЦ", где С какие-то символы, Ц - цифры.
Надо сгенерить следующий такого же формата, сделав +1 к числу ЦЦЦЦ.
Например из "SVA00009" получить "SVA00010" и т.д.
...
Рейтинг: 0 / 0
Инкрементирование строки
    #39376593
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T,

хм...

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
        public static string StrInc([NotNull] string s)
        {
            if (s == null) throw new ArgumentNullException(nameof(s));
            var m = Regex.Match(s, @"(?<prefix>[A-Za-z]+)?(?<number>\d+)", RegexOptions.Compiled);
            if (m.Success)
            {
                var prefixGroup = m.Groups["prefix"];
                var prefix = prefixGroup.Success ? prefixGroup.Value : string.Empty;
                var number = m.Groups["number"].Value;
                var n = long.Parse(number);
                return prefix + (++n).ToString().PadLeft(number.Length, '0');
            }
            throw new ArgumentException("Wrong input string!", nameof(s));
        }
...
Рейтинг: 0 / 0
Инкрементирование строки
    #39376619
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt, у тебя LINQ-зависимость

Тут одного цикла достаточно. И букав меньше будет.
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
public static string StrInc([NotNull] string s)
{
for(int i = s.Lenght - 1; i >= 0; i--) {
  if(s[i] >= '0' && s[i] < '9') {
     s[i]++;
     break;
  } else if(s[i] == '9') {
     s[i] = '0';
  } else {
      throw new ArgumentException("Wrong input string!", nameof(s));
  }
  return s;
}
...
Рейтинг: 0 / 0
Инкрементирование строки
    #39376626
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima ThVostt, у тебя LINQ-зависимость

Тут одного цикла достаточно. И букав меньше будет.

Твой код не рабочий, это видно не вооружённым глазом, даже без компилятора :)

А также читабельность и сопровождение на крайне низком уровне.
...
Рейтинг: 0 / 0
Инкрементирование строки
    #39376633
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttТвой код не рабочий, это видно не вооружённым глазом, даже без компилятора :)
Я его сразу сюда писал. Не запускал. Скобку } пропустил перед return.

hVosttА также читабельность и сопровождение на крайне низком уровне.
Обычный алгоритмический код. Если я его по памяти написал, то прочитать тоже не сложно будет.
...
Рейтинг: 0 / 0
Инкрементирование строки
    #39376634
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Slant-shadow,
Собеседование в Акуматике?
...
Рейтинг: 0 / 0
Инкрементирование строки
    #39376645
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt, затести
Код: c#
1.
StrInc("11111111111111111111111111111111111111111")


:)
...
Рейтинг: 0 / 0
Инкрементирование строки
    #39376660
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TЯ его сразу сюда писал. Не запускал. Скобку } пропустил перед return.

Нет, твоя ошибка гораздо грубее и хуже. Тут не важно где ты писал и запускал или нет :)
Ошибка такая, что знающий человек её не допустит, даже если будет писать слюнявым пальцем на туалетной бумаге.




Dima TОбычный алгоритмический код.

Мой алгоритм:

1. Разбить строку на части: префикс и число.
2. Извлечь из числовой части, значимое число и длину.
3. Увеличить число на 1.
4. Перевести число в строку, добив нулями до изначальной длины.
5. Составить строку из префикса и новой числовой части.

Вот это алгоритм, его обычными словами можно описать и поймёт даже обезьяна.
А у тебя какие-то непонятные извращения с циклами и операциями с кодами символов.
...
Рейтинг: 0 / 0
Инкрементирование строки
    #39376661
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima ThVostt, затести

Ошибка парсинга будет. Если надо работать с очень большими числами, я возьму BigInteger =)
...
Рейтинг: 0 / 0
Инкрементирование строки
    #39376696
Pallaris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima ThVosttТвой код не рабочий, это видно не вооружённым глазом, даже без компилятора :)
Я его сразу сюда писал. Не запускал. Скобку } пропустил перед return.

Нельзя просто так взять и инкриментировать чар в строке
...
Рейтинг: 0 / 0
Инкрементирование строки
    #39376703
Pallaris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну и a9999 не прожует.

Вариант Хвоста надежнее
...
Рейтинг: 0 / 0
Инкрементирование строки
    #39376711
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PallarisDima Tпропущено...

Я его сразу сюда писал. Не запускал. Скобку } пропустил перед return.

Нельзя просто так взять и инкриментировать чар в строке
1. Можно, но не буду учить плохому.
2. Slant-shadow принимающую в качестве аргумента в виде массива типа char.
...
Рейтинг: 0 / 0
Инкрементирование строки
    #39376716
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttDima TЯ его сразу сюда писал. Не запускал. Скобку } пропустил перед return.

Нет, твоя ошибка гораздо грубее и хуже. Тут не важно где ты писал и запускал или нет :)
Ошибка такая, что знающий человек её не допустит, даже если будет писать слюнявым пальцем на туалетной бумаге.


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

hVosttВот это алгоритм, его обычными словами можно описать и поймёт даже обезьяна.
А у тебя какие-то непонятные извращения с циклами и операциями с кодами символов.
Мой еще проще: сложение столбиком проходил в школе? Это оно и есть, +1 столбиком. Подробный алгоритм в учебнике по математике за 2 класс :)
...
Рейтинг: 0 / 0
Инкрементирование строки
    #39376717
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt,
В акуматике еще в условии запрет на использование регэкспов.
...
Рейтинг: 0 / 0
Инкрементирование строки
    #39376721
Pallaris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВ принимающую в качестве аргумента в виде массива типа char.

Ребята там вроде код, принимающий стринги, выкладывали.
...
Рейтинг: 0 / 0
Инкрементирование строки
    #39376723
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TЗаинтриговал, договаривай, а то может ты просто сам запутался в моем примере, есть повод так думать

Строки в .NET не изменяемые, ты не можешь работать со строкой, как с массивом, а ты работаешь. Наигрубейшая ошибка надо сказать.

Даже если предположить, что строки стали работать как массивы, твой "алгоритм" вообще какую-то ерунду делает, не относящуюся к задаче ТС. Не решает задачу короче.

Я думаю на самом деле ты хотел изобразить что-то типа этого:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
        public static string StrInc2([NotNull] string s)
        {
            if (string.IsNullOrEmpty(s)) throw new ArgumentException("Wrong string.", nameof(s));
            var b = new char[s.Length];
            var i = s.Length;
            while (--i >= 0 && char.IsDigit(s[i]))
            {
                var d = s[i] + 1;
                if (d > '9')
                {
                    b[i] = '0';
                }
                else
                {
                    b[i] = (char)d;
                    break;
                }
            }
            while (--i >= 0) b[i] = s[i];
            return new string(b);
        }
...
Рейтинг: 0 / 0
25 сообщений из 105, страница 1 из 5
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Инкрементирование строки
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]