Задать вопрос
@itcry

Как к текстовочисленному ID прибавить 1 в С#?

Здравствуйте!
Имеется переменная типа string, которая принимает значение некоторых id вида: сlient4567224
Как в C# можно к переменной, которая имеет подобное значение прибавить единицу, что бы на выходе получить сlient4567225 ?
Спасибо заранее всем!!!!!
  • Вопрос задан
  • 244 просмотра
Подписаться 2 Простой 2 комментария
Решения вопроса 3
mindtester
@mindtester Куратор тега C#
http://iczin.su/hexagram_48
Дело в том, что у меня может быть ID и вида cli435ent8565767 , а прибавить единицу нужно именно в конце, что бы на выходе получилось cli435ent8565768


- ну сделайте отсчет с конца цифр (https://docs.microsoft.com/ru-ru/dotnet/api/system...
- разрубаете строку на этом месте, любым понятным для вас способом
- "хвост" конвертируете в число
- инкриминируете
- конвертируете в строку
- склеиваете с "головой"

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

ps даже не особо сложно из cli435ent8565767 получить cli{а тут знаки свыше 7}ent{7 знаков} и 4358565767... сделать инкремент и собрать обратно, соблюдая ваши странные правила. вопрос только в том, что бы правила были однозначно определены. и повторюсь - необходимые основы, вам уже сообщили

pps если вы ждете чудесных манипуляций именно со строками/символами - их нет. можно определить код символа и инкрементировать его.. это работает для [0..8].. а для девятки будет "упс"..
.. далее, допустим у вас концовка нумерации 199 - инкремент то нужен 200.. а если 1999, тогда 2000.. ход мыслей уловили?

инкрементировать желательно именно числовое значение. если исходная строка сложная, это ваша отдельная задача - изучить структуру строки, и какие части должны быть "чувствительны" к инкременту "хвоста".. а разбор строки на части и обратная склейка - дело техники.. при чем простой. и (upd новичку*) вполне корректно задавать вопросы по шагам подобной техники, но не превращать вопрос в задание - "сделайте мне хорошо"

ppps еще точнее, вопросы может задавать кто угодно, и какие угодно. но надо различать грань "помогите мне"/"сделайте за меня". успехов
Ответ написан
serafimprozorov
@serafimprozorov
Люблю Erlang....
Если буквенная часть у Вас всегда одинакова и всегда является строкой "client", то вот так:

const string id = "сlient4567224";
      const string Prefix = "client";
      var numeric = int.Parse(id.Substring(prefix.Length));
      var nextId = $"{prefix}{numeric + 1}";


Если префиксом не всегда является строка "client", но цифровая часть всегда строго после буквенной, то Вам подойдет такой вариант, он более универсален:

const string id = "blahblah4567224";
      const string Prefix = "client";

      var i = 0;
      while (i < id.Length && !char.IsDigit(id[i]))
      {
         i++;
      }

      var numeric = int.Parse(id.Substring(i));
      var nextId = $"{prefix}{numeric + 1}";
Ответ написан
Комментировать
@kttotto
пофиг на чем писать
Вытаскивает цифровую группу с конца строки с помощью регулярки, ну соответственно потом приводится к int и инкрементируется.
var stringId = "client123456"
var regex = new Regex(@"\d+$");

var match = regex.Match(stringId);
if(string.IsNullOrEmpty(match.Value)
{
	// В id не найдено цифровой части
	return;
}

var intId = int.Parse(match.Value)
var newId = $"client{++intId}"
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы