繁体   English   中英

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

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

我有类似于这些的字符串:

坦帕总部-9125亨德森路-评论发布在工作指令#7065

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

TAMPA HQ-9125 Henderson Rd-工作单#805923请求编号已分配

是否有提取WO#的通用方法? 在C#中,因此输出为:

工单#7065

工单#79651

工单#805923

等等?

此正则表达式将起作用: 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+"

这是一个算法:

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

暂无
暂无

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

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