Вам понадобится регулярное выражение (регулярное выражение). Правило замены здесь
- граница слова
- 23
- граница слова
чтобы ваш код выглядел следующим образом
var result = Regex.Replace(input, @"\b23\b", "X");
Альтернативным подходом было бы разделить вашу строку, заменить соответствующие элементы и присоединиться к новой строке>
var result = string.Join(";", input.Split(";").Select(v => v == "23" ? "X" : v));
Обновление: обновить значение в словаре
Если вы знаете ключ, это легко:
myDict["thekey"] = Regex.Replace(myDict["thekey"], @"\b23\b", "X");
Если вы хотите сделать эту замену для всех предметов, я бы сделал это следующим образом, но я не уверен, является ли это наилучшим возможным решением:
[Fact]
public void Replace_value_in_dict()
{
// given
var mydict = new Dictionary<string, string>
{
{ "key1", "donothing" },
{ "key2", "23;32;323;34;45" },
};
// when
var result = mydict
.Select(kv => (kv.Key, Regex.Replace(kv.Value, @"\b23\b", "X")))
.ToDictionary(x => x.Item1, x => x.Item2);
// then
Assert.Equal(result, new Dictionary<string, string>
{
{ "key1", "donothing" },
{ "key2", "X;32;323;34;45" },
});
}