Разделить строку между двумя символами в C # - PullRequest
0 голосов
/ 17 марта 2012

У меня есть строка типа "24; # usernamehere, # AWRFR \ user, #, #, # usernamehere"

Я хочу разбить эту строку при первом появлении на # и , т.е. я хочу получить строку, которая находится между этими двумя символами.

Так что для приведенной выше строки я хочу, чтобы ВЫХОД:

usernamehere

Как я могу разбить строку между двумя символами, используя функцию Regex?

Ответы [ 4 ]

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

Простой шаблон регулярных выражений может выполнять эту работу:

var pattern = new System.Text.RegularExpressions.Regex("#(?<name>.+?),");

тест:

string s = @"24;#usernamehere,#AWRFR\user,#,#,#usernamehere";
pattern.Match(s).Groups["name"].Value;   //usernamehere
2 голосов
/ 17 марта 2012

Использование Linq:

using System.Linq;
var input = @"24;#usernamehere,#AWRFR\user,#,#,#usernamehere";

Вы можете разделить его одной строкой:

var x = input.Split('#').Where(e => e.Contains(',')).Select(e => e.Split(',').First());

, что совпадает с:

var x = from e in input.Split('#') 
        where e.Contains(',') 
        select e.Split(',').First();

в обоих случаях результат будет:

x = {"usernamehere", "AWRFR\user", "", ""}

Это точно массив, в котором все подстроки заключены в # и ,. Затем, если вы хотите первый элемент, просто добавьте .First() или выполните:

x.First();
1 голос
/ 17 марта 2012

Вам нужно найти первый индекс '#' & ','. Затем используйте метод подстроки, чтобы получить необходимую вам обрезанную строку. Прочитайте this для более подробной информации о методе подстроки

string s = @"24;#usernamehere,#AWRFR\user,#,#,#usernamehere";
string finalString = s.Substring(s.IndexOf('#') + 1, s.IndexOf(',') - s.IndexOf('#') - 1);
0 голосов
/ 17 марта 2012

Не совсем так, как вы просили об этом, но должны делать то, что вы хотите ...

string input = @"24;#usernamehere,#AWRFR\user,#,#,#usernamehere";
string username = input.Substring(input.LastIndexOf("#") + 1);

Если бы вы хотели, вы могли бы получить позицию первого # и,

int hashPosition = input.IndexOf("#") + 1;
int commaPosition = input.IndexOf(",");

string username = input.Substring(hashPosition, commaPosition - hashPosition));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...