Манипулирование строкой: обнаружен символ в строке и выделены все символы после этого - PullRequest
0 голосов
/ 09 августа 2011

Я использую asp.net 4 и c #.

У меня есть строка:

string original = "hi-this-is-a-string-15"

Обратите внимание на последние 3 цифры справа -15

Теперь та же строка, но с большим числом после последней черты

hi-this-is-a-string-9999

Обратите внимание на последние 5 букв справа -9999

Мне нужно RegEx или другое решение, которое позволило бы сделать подвыбор в string original на любой цифре после последней черты ex: -15 или -999.

Роль должна быть гибкой для обнаружения любой переменной длины цифры после последней черты например: -1 или -5656565656565...

В конце процесса у меня должно быть:

string original = "hi-this-is-a-string-15"
string cropped = "hi-this-is-a-string"
string suffix = "-15"

Есть идеи, как это сделать? Спасибо за вашу помощь в этом.

Мой оригинальный код (генерирует ошибку):

string original = "hi-this-is-a-string-15";
int l = original.Length;
int i = original.LastIndexOf("-");
string sub = original.Substring(i, l);

error: Index and length must refer to a location within the string. Parameter name: length 

Ответы [ 4 ]

4 голосов
/ 09 августа 2011

Regex будет излишним. String.LastIndexOf.

3 голосов
/ 09 августа 2011

Вы можете получить индекс последнего вхождения и вернуть форму подстроки, которая выглядит как.

var index = original.LastIndexOf('-');
var suffix = original.Substring(index);
var crop = original.Substring(0, index);
1 голос
/ 09 августа 2011
String Original = "hi-this-is-a-string-15";
Regex A = new Regex(@"^(.*)(-\d+)$");

var ResultA = A.Match(Original);

Console.Write("Found Match A: ");
Console.WriteLine(ResultA.Groups[0]);

Console.WriteLine(ResultA.Groups[1]);
Console.WriteLine(ResultA.Groups[2]);

ResultA.Groups[0] будет содержать исходную строку (полное совпадение)

ResultA.Groups[1] содержит первую группу захвата (часть до последней черты)

ResultA.Groups[2]содержит вторую группу захвата (последнюю черту и следующие цифры)

Это регулярное выражение ^(.*)(-\d+)$

^ привязывает шаблон к началу строки

.* соответствует любому символу 0 или более раз

-\d+ соответствует -, за которым следуют 1 или более цифр (\d - это цифра и + - это одна или несколько)

$ привязывает рисунок к концу строки

() части в скобках хранятся в группах захвата.Первая открывающая скобка ==> Первая группа захвата (.groups[1]), вторая открывающая скобка ...

0 голосов
/ 09 августа 2011

Как насчет

string original = "hi-this-is-a-string-15";
String newS=original.Substring(19);//newS="-15";



 string original = "hi-this-is-a-string-9999";
 String newS=original.Substring(19);//newS="-9999";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...