我试图得到一个字符串,在字符串中的大小写更改的地方有一个下划线'_',以使用户更清楚.例如,如果我们有一个String'个人ID号码',我想把它变成'personal_ID_number'.这是在C#中.
谢谢,我感谢任何帮助,建议.
-sid
更改案例更改
你正在寻找这个(我删除了ID之前的空格,假设它是一个错字)
(?:(?<=[a-z])(?=[A-Z]))|(?:(?<=[A-Z])(?=[a-z]))
Run Code Online (Sandbox Code Playgroud)
它将转变personalIDnumber为personal_ID_number
在Regexr上看到它
Lookbehind((?<=[a-z]))和lookahead((?=[A-Z]))构造匹配小写字母和大写字母之间的空字符串(或管道后第二部分中的其他方向|),并用下划线替换它.
使用可选空格替换大小写更改
如果要在替换中包含空格,请将其包含在外观之间
(?:(?<=[a-z])\s*(?=[A-Z]))|(?:(?<=[A-Z])\s*(?=[a-z]))
Run Code Online (Sandbox Code Playgroud)
它将转变personal IDnumber为personal_ID_number
更换案例更改,但每个单词以大写字母开头
如果您说每个单词都以大写字母开头,那么您可以这样做
(?:(?<=[a-z])(?=[A-Z]))|(?:(?<=[A-Z])(?=[A-Z][a-z]))
Run Code Online (Sandbox Code Playgroud)
这将来自
PersonalIDNumber
JustAnotherTest
OtherWordWithID
SomeMORETest
这个
Personal_ID_Number
Just_Another_Test
Other_Word_With_ID
Some_MORE_Test