亲爱的同志们问候.
我无法弄清楚如何通过正则表达式完成以下操作.
我需要取这个格式编号201101234
并将其转换为11-0123401
,其中数字3和4成为短划线左侧的数字,其余五位数字插入短划线右侧,然后是硬编码01.
我试过http://gskinner.com/RegExr,但语法只是让我失望.
这个答案,相当于子串作为RegularExpression,听起来很有希望,但我无法正确解析它.
我可以创建一个SQL函数来实现这一点,但我不想锤击我的服务器以重新格式化一些字符串.
提前致谢.
p.s*_*w.g 11
你可以试试这个:
var input = "201101234";
var output = Regex.Replace(input, @"^\d{2}(\d{2})(\d{5})$", "${1}-${2}01");
Console.WriteLine(output); // 11-0123401
Run Code Online (Sandbox Code Playgroud)
这将匹配:
并返回一个字符串,用以替换匹配的文本
01
.开始和结束锚点(^
/ $
)确保如果输入字符串与此模式不完全匹配,它将只返回原始字符串.
如果您可以使用自定义C#脚本,则可能需要使用Substring:
string newStr = string.Format("{0}-{1}01", old.Substring(2,2), old.Substring(4));
Run Code Online (Sandbox Code Playgroud)
我不认为你真的需要一个正则表达式.子串会更好.但是如果你只想要正则表达式,你可以使用这个:
string newString = Regex.Replace(input, @"^\d{2}(\d{2})(\d+)$", "$1-${2}01");
Run Code Online (Sandbox Code Playgroud)
说明:
^\d{2} // Match first 2 digits. Will be ignored
(\d{2}) // Match next 2 digits. Capture it in group 1
(\d+)$ // Match rest of the digits. Capture it in group 2
Run Code Online (Sandbox Code Playgroud)
现在,所需的数字位于第1组和第2组中,您可以在替换字符串中使用它们.
归档时间: |
|
查看次数: |
449 次 |
最近记录: |