简体   繁体   English

如何从随机字符串中提取子字符串?

[英]How to extract a substring from a random string?

I have strings similar to these: 我有类似于这些的字符串:

TAMPA HQ - 9125 Henderson Rd - Comment Posted on Work Order # 7065 坦帕总部-9125亨德森路-评论发布在工作指令#7065

TAMPA HQ - 9125 Henderson Rd - Work Order # 79651 Alert TAMPA HQ-9125 Henderson Rd-工作单#79651警报

TAMPA HQ - 9125 Henderson Rd - Work Order # 805923 Request Number Assigned TAMPA HQ-9125 Henderson Rd-工作单#805923请求编号已分配

Is there any generic way to extract WO #? 是否有提取WO#的通用方法? in C# so the output would be: 在C#中,因此输出为:

Work Order # 7065 工单#7065

Work Order # 79651 工单#79651

Work Order # 805923 工单#805923

etc? 等等?

This regex would work: Work Order # \\d+ . 此正则表达式将起作用: Work Order # \\d+

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

使用这样的正则表达式:

"^Work Order #.\d+"

Here's an algorithm: 这是一个算法:

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

Now, loop through and find the last consecutive character that is a number, and use that number to do a substring. 现在,遍历并找到最后一个连续的字符,即一个数字,并使用该数字做一个子字符串。

//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);
}

tested here : http://rextester.com/CAR42027 在这里测试: http : //rextester.com/CAR42027

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM