Извлечь часть строки между точками A и B - PullRequest
16 голосов
/ 29 февраля 2012

Я пытаюсь извлечь что-то из письма.Общий формат письма всегда будет:

blablablablabllabla hello my friend.

[what I want]

Goodbye my friend blablablabla

Теперь я сделал:

                    string.LastIndexOf("hello my friend");
                    string.IndexOf("Goodbye my friend");

Это даст мне очко до его начала и очко после его запуска.Какой метод я могу использовать для этого?Я нашел:

String.Substring(Int32, Int32)

Но это занимает только стартовую позицию.

Что я могу использовать?

Ответы [ 5 ]

25 голосов
/ 29 февраля 2012

Подстрока принимает начальный индекс (начиная с нуля) и количество символов, которое вы хотите скопировать.

Вам понадобится немного математики, например:

string email = "Bla bla hello my friend THIS IS THE STUFF I WANTGoodbye my friend";
int startPos = email.LastIndexOf("hello my friend") + "hello my friend".Length + 1;
int length = email.IndexOf("Goodbye my friend") - startPos;
string sub = email.Substring(startPos, length);

Вы, вероятно, хотите поместить строковые константы в const string.

8 голосов
/ 29 февраля 2012

Вы также можете использовать Regex

string s =  Regex.Match(yourinput,
                        @"hello my friend(.+)Goodbye my friend", 
                        RegexOptions.Singleline)
            .Groups[1].Value;
2 голосов
/ 29 февраля 2012

Вы можете просто рассчитать длину от начала и до конца

const string startText = "hello my friend";
var start = str.LastIndexOf(startText) + startText.Length;
var end = str.IndexOf("Goodbye my friend");
var length = end -start;
str.Substring(start,length);
1 голос
/ 30 июля 2015
string s1 = "find a string between within a lengthy string";
string s2 = s1.IndexOf("between").ToString();
string output = s1.Substring(0, int.Parse(s2));
Console.WriteLine("string before between is : {0}", output);
Console.ReadKey();
0 голосов
/ 29 февраля 2012

попробуй myStr.substring(start,end);

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