Есть ли альтернатива строке. Замена, которая нечувствительна к регистру?

301
задан Cœur 8 August 2017 в 17:53
поделиться

5 ответов

От MSDN
$0 - "Заменяет последней подстрокой, подобранной числом числа группы (десятичное число)".

В группе 0 Регулярных выражений.NET всегда все соответствие. За литеральный $ Вам нужно к

string value = Regex.Replace("%PolicyAmount%", "%PolicyAmount%", @"$0", RegexOptions.IgnoreCase);
130
ответ дан Todd White 23 November 2019 в 01:27
поделиться

Метод регулярного выражения должен работать. Однако то, что можно также сделать, является нижним регистром строка от базы данных, нижний регистр %variables %, который Вы имеете, и затем определяете положения и длины в более низкой строке в корпусе от базы данных. Помните, положения в строке не изменяются просто потому что его более низкое в корпусе.

Тогда использование цикла, который идет наоборот (ее более легкое, если Вы не, необходимо будет провести рабочий подсчет того, куда более поздние точки перемещаются в) удаляют из неболее низкой строки в корпусе от базы данных %variables % их положением и длиной и вставляют заменяющие значения.

0
ответ дан cfeduke 23 November 2019 в 01:27
поделиться
Regex.Replace(strInput, strToken.Replace("$", "[$]"), strReplaceWith, RegexOptions.IgnoreCase);
0
ответ дан Joel Coehoorn 23 November 2019 в 01:27
поделиться

Походит string.Replace , должен иметь перегрузку, которая берет StringComparison аргумент. Так как это не делает, Вы могли попробовать что-то вроде этого:

public static string ReplaceString(string str, string oldValue, string newValue, StringComparison comparison)
{
    StringBuilder sb = new StringBuilder();

    int previousIndex = 0;
    int index = str.IndexOf(oldValue, comparison);
    while (index != -1)
    {
        sb.Append(str.Substring(previousIndex, index - previousIndex));
        sb.Append(newValue);
        index += oldValue.Length;

        previousIndex = index;
        index = str.IndexOf(oldValue, index, comparison);
    }
    sb.Append(str.Substring(previousIndex));

    return sb.ToString();
}
294
ответ дан Neuron 23 November 2019 в 01:27
поделиться

Кажется, самый простой метод - это просто использовать метод Replace, который поставляется с .Net и существует со времен .Net 1.0:

string res = Microsoft.VisualBasic.Strings.Replace(res, 
                                   "%PolicyAmount%", 
                                   "$0", 
                                   Compare: Microsoft.VisualBasic.CompareMethod.Text);

Чтобы использовать этот метод, вы должны добавить ссылку на сборку Microsoft.VisualBasic. Эта сборка является стандартной частью среды выполнения .Net, ее не нужно дополнительно загружать или помечать как устаревшую.

30
ответ дан 23 November 2019 в 01:27
поделиться
Другие вопросы по тегам:

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