Извлечь конкретный текст из строки - PullRequest
2 голосов
/ 14 марта 2012

Это строка: «случайный текст- $ 0.15 USD»

То, что я хочу извлечь, это «0,15» за исключением $ и USD. Таким образом, текст будет содержать только «0,15» без всех остальных слов.

Как мне это сделать?

Заранее спасибо:)

Ответы [ 8 ]

4 голосов
/ 14 марта 2012

Использование регулярных выражений

string str = "-random text- $0.15 USD";

Regex rx = new Regex(@"(?<=\$)[0-9]+\.[0-9]+(?= USD$)");
var res = rx.Match(str);

if (res.Success) {
    var res2 = res.ToString();
}

"Основной" частью является [0-9]+\.[0-9]+ (одна или несколько цифр, за которыми следует ., за которыми следуют одна или несколько цифр).Это выражение должно следовать за знаком $ (?<=\$) и должно сопровождаться USD (есть пробел перед USD) плюс конец строки (?= USD$).

Онлайн тест: http://regexr.com? 30aot

2 голосов
/ 14 марта 2012
var result = Regex.Match("-random text- $0.15 USD",   @"\$([ \d\.]+)USD")
                  .Groups[1].Value;
1 голос
/ 14 марта 2012

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

string sentence = "-random text- $0.15 USD";
string[] doubleArray = System.Text.RegularExpressions.Regex.Split(sentence, @"[^0-9\.]+")
                       .Where(c => c != "." && c.Trim() != "").ToArray();
if (doubleArray.Count() > 0)
{
     double value = double.Parse(doubleArray[0]);
}

output:
.15
1 голос
/ 14 марта 2012

Зачем использовать регулярные выражения, когда вы можете использовать встроенные String методы?

 int startIndex = myRandomString.LastIndexOf("$") + 1;
 int lastIndex = myRandomString.LastIndexOf("U") - startIndex;

 string price = random.Substring(startIndex, lastIndex);
1 голос
/ 14 марта 2012

вы можете сделать что-то вроде этого

    string str = "-random text- $0.15 USD";
    int startIndex = str.IndexOf("$")+1;
    int length = str.IndexOf("USD", startIndex) - startIndex;
    string output = str.Substring(startIndex, length).Trim();
1 голос
/ 14 марта 2012

Регулярные выражения здесь ваши друзья.

Используйте класс RegEx (System.Text.RegularExpressions), используя шаблон ([\d\.]+) для извлечения числа + десятичного разряда.

1 голос
/ 14 марта 2012

Используйте регулярное выражение.Что-то вроде:

\d+\.*\d+
0 голосов
/ 14 марта 2012

Задумывались ли вы об использовании regex ?

Regex.Match("0.15");

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...