Замена части строки динамически

У меня есть исходная строка по типу "msp.203.321.33" Мне нужно при определённых условиях перед первой точкой вставлять и заменять 1 строку, которая меняется. Чтобы это работало по принципу интерполяции (типа так: "msp{нужная мне строка}.203.321.33"). У кого-то есть варианты как это можно запилить?

P.S. Хотел уточнить некоторые детали.

  1. Строку я изначально не знаю и получаю ее из элемента
  2. Строка которую я хочу вставлять состоит из одного или двух символов.

UPD: Спасибо комментаторам, у меня вышло что-то подобное. Только есть проблема с тем, что код нормально производит замену если приходит в конкатенацию 1 символ, если 2, то он просто вставляет первый. Вот код:

  private void UpdateVendorCode()
  {
     var _codeString = TempStorage.Subtitle; // MP.208.09.56
            
     var _sign =_lightsCharacter + _currentSizeCharacter; // "X" or "YX"
     var _firstDotIndex = _codeString.IndexOf(".", StringComparison.Ordinal); // 1st dot index

     var _firstPart = _codeString.Substring(0, _firstDotIndex);
     var _lastPart = _codeString.Substring(_firstDotIndex, _codeString.Length - _firstPart.Length);
     subtitle.text = _firstPart + _sign + _lastPart;
  }

По сути результатом должно быть Либо MPX.208.09.56 либо MPXY.208.09.56, но когда я выполняю действие которое должно вставить Y - оно просто заменяет X, а не добавляет.


Ответы (3 шт):

Автор решения: Mr.AntonDer

Элементарная задачка)

Код добавления в строчку:

private string strAdd(string original, string add)
    {
        string[] origM = original.Split('.');
        origM[0] += add;
        return string.Join(".",origM);
    }

Использование:

string result = strAdd("msp.203.321.33","xy");

Результат:

mspxy.203.321.33

Для замены можете использовать такое:

private string strRep(string original, string add)
    {
        string[] origM = original.Split('.');
        origM[0] = add;
        return string.Join(".",origM);
    }
→ Ссылка
Автор решения: Honey Cake

Я решил именно таким образом.

  private void UpdateVendorCode()
  {
     var _codeString = TempStorage.Subtitle; // MP.208.09.56
            
     var _sign =_lightsCharacter + _currentSizeCharacter; // "X" or "YX"
     var _firstDotIndex = _codeString.IndexOf(".", StringComparison.Ordinal); // 1st dot index

     var _firstPart = _codeString.Substring(0, _firstDotIndex);
     var _lastPart = _codeString.Substring(_firstDotIndex, _codeString.Length - _firstPart.Length);
     subtitle.text = _firstPart + _sign + _lastPart;
  }

→ Ссылка
Автор решения: bearpro

С помощью регулярных выражений можно в одну строчку.

using System.Text.RegularExpressions;

var input = "A.x.x.x";
var result = new Regex(@"\.").Replace(input, "B.", 1);
System.Console.WriteLine(result);
// AB.x.x.x

Или вот ещё однострочный вариант, даже без регулярок:

using System.Linq;

var input = "A.x.x.x";
var result = input.Split(".", 2).Aggregate((a, b) => $"{a}B.{b}");
System.Console.WriteLine(result);
// AB.x.x.x
→ Ссылка