#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;
}