Как получить строку между двумя определенными символами в C#

#c# #string

#c# #регулярное выражение #строка #символ

Вопрос:

Испытываю трудности с регулярным выражением.

У меня есть эта строка:

Мне нужно заменить это целое число «11.000000» другим числом.

Как мне идентифицировать эту строку, сказав:

Указывайте строку прямо перед «%», пока не дойдете до первого пробела («»)?

Комментарии:

1. Если вы уверены, что это всегда число, то вы можете сделать d (.d )?(?=%)

Ответ №1:

Вы можете использовать LINQ:

 var myString = "Fixed Breakeven with 11.0000000% Fees";
var number = myString.Split('%').First().Split(' ').Last();
  

Комментарии:

1. Обратите внимание, что если нет знака процента, это приводит к последнему значению после пробела, или если пробелов также нет, это приводит ко всей строке, где в качестве регулярного выражения также проверяется формат входных данных.

Ответ №2:

Вы также можете попробовать это, используя regex. Это универсальный метод для извлечения десятичной дроби из строки. Это будет работать во всех случаях.

 public static bool ExtractDecimalFromString(string inputString, out Decimal decimalValue)
    {
        Regex regex = new Regex(@"^D*?((-?(d (.d )?))|(-?.d )).*");
        Match match = regex.Match(inputString);
        decimalValue =  match.Success ? Convert.ToDecimal(match.Groups[1].Value) : 0;
        return match.Success;
    }
  

Ответ №3:

Попробуйте это:

 string pattern = @"^Fixed Breakeven with (d (.d )?)% Fees$";
string input = "Fixed Breakeven with 11.0000000% Fees";

var match = Regex.Match(input, pattern);
string output = string.Empty;

if (match != null)
{
    output = match.Groups[1].Value;
}
  

Выдает 11.0000000 .