Как мы можем извлечь подстроку строки по позиции и разделителю - PullRequest
13 голосов
/ 07 апреля 2010

Как мы можем отделить подстроку от строки

Как у меня есть строка

String mainString="///Trade Time///Trade Number///Amount Rs.///";

Теперь у меня есть другая строка

String subString="Amount"

Затем я хочу извлечь подстроку Amount Rs. с помощью второй строки с именем subString , а не каким-либо другим способом. Но ее следует извлечь с помощью двух параметров, таких как первый, если у меня есть индекс no строки Amount. и второй до следующей строки ///.

Ответы [ 4 ]

28 голосов
/ 07 апреля 2010

Сначала получите индекс подстроки:

int startIndex = mainString.IndexOf(subString);

Затем получите индекс следующих слешей:

int endIndex = mainString.IndexOf("///", startIndex);

Тогда вы можете получить нужную подстроку:

string amountString = mainString.Substring(startIndex, endIndex - startIndex);
1 голос
/ 07 апреля 2010
string str = Regex.Match("///(?<String>[^/]*?" + subString + "[^/]*?)///").Groups["String"].Value;

Следует использовать String.Format, но точное использование {x} в строке @ дает Regex, который я не могу вспомнить (вам нужно удвоить {}?)

N.B: Это предполагает, что вы не ожидаете /, поэтому может быть немного улучшено.

1 голос
/ 07 апреля 2010

Это должно решить вашу проблему. Я считаю:

mainString.substring(mainString.IndexOf("Amount Rs. "), "///")

, где mainString.IndexOf("Amount Rs. ") - Начальный индекс & "///" - Конечный индекс .

0 голосов
/ 16 мая 2014

В качестве дополнения к ответу @ Guffa вы можете сделать из него метод расширения:

Примечание. Проверка того, что указанные индексы находятся в границах строки, отсутствует.

public static class StringExtensions
{

    public static string SubstringBetweenIndexes(string value, int startIndex, int endIndex)
    {
        return value.Substring(startIndex, endIndex - startIndex);
    }

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