[英]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.