Как извлечь подстроку из случайной строки?

У меня есть строки, похожие на эти:

TAMPA HQ - 9125 Henderson Rd - Comment Posted on Work Order # 7065

TAMPA HQ - 9125 Henderson Rd - Work Order # 79651 Alert

TAMPA HQ - 9125 Henderson Rd - Work Order # 805923 Request Number Assigned

Есть ли общий способ извлечь WO #? в C#, поэтому вывод будет:

Work Order # 7065

Work Order # 79651

Work Order # 805923

так далее?

Вы пробовали Regex?

maccettura 06.09.2018 19:37

Все ли строки будут содержать «Номер наряда на работу»?

Raj More 06.09.2018 19:39

Нет, я не разбираюсь в Regex, поэтому, если вы хотите предложить что-то, что мне очень поможет. Примечание. Фактический номер WO может состоять из любого числа цифр.

monstro 06.09.2018 19:39

Да, Радж, у всех строк есть "Номер наряда на работу" плюс фактическое число после

monstro 06.09.2018 19:40
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
4
111
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Ответ принят как подходящий

Это регулярное выражение будет работать: Work Order # \d+.

Regex r = new Regex("Work Order # \d+");
Match match = r.Match("TAMPA HQ - 9125 Henderson Rd - Work Order # 79651 Alert");

Так как я плохо разбираюсь в регулярных выражениях, может быть, вы поможете мне получить значение "WO-134261" из строки "Запрос на обслуживание объекта Comcast Center № WO-134261"?

monstro 06.09.2018 20:18

это будет делать? Request # WO-\d+

Ian Rehwinkel 06.09.2018 20:19

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

"^Work Order #.\d+"
^ приведет к тому, что он не будет соответствовать приведенным примерам (первые 3)
Hans Kilian 06.09.2018 19:56

Вот алгоритм:

LengthOfString = StrLength (IncomingString)
WorkOrderNumberPosition = FindInString (IncomingString, "Work Order # ")
LeftSideRemovedString = SubString (IncomingString, WorkOrderNumberPosition, LengthOfString - WorkOrderNumberPosition)
WorkOrderRemoved = Replace (LeftSideRemovedString, "Work Order #", "")

Теперь выполните цикл и найдите последний последовательный символ, который является числом, и используйте это число для создания подстроки.

//to simulate an input lines
var input = new StringBuilder();
input.AppendLine("TAMPA HQ -9125 Henderson Rd -Comment Posted on Work Order # 7065");
input.AppendLine("TAMPA HQ -9125 Henderson Rd -Work Order # 79651 Alert");
input.AppendLine("TAMPA HQ - 9125 Henderson Rd -Work Order # 805923 Request Number Assigned");

Regex regex = new Regex(@"(?<Identifier>Work Order # \d+)");
var results = regex.Matches(input.ToString());
foreach (Match match in results)
{
    Console.WriteLine(match.Groups["Identifier"].Value);
}

протестировано здесь: http://rextester.com/CAR42027

Другие вопросы по теме