C# 用于案例更改的正则表达式
我试图让字符串在大小写的任何地方都有一个下划线“\u1”,更改字符串以使用户更清楚。例如,如果我们有一个字符串“personal ID number”,我想将其设置为“personal\u ID\u number”。这是C 谢谢你,谢谢你的帮助和建议 -Sid更换案例 你在找这个我在ID之前删除了空格,假设是打字错误C# 用于案例更改的正则表达式,c#,regex,C#,Regex,我试图让字符串在大小写的任何地方都有一个下划线“\u1”,更改字符串以使用户更清楚。例如,如果我们有一个字符串“personal ID number”,我想将其设置为“personal\u ID\u number”。这是C 谢谢你,谢谢你的帮助和建议 -Sid更换案例 你在找这个我在ID之前删除了空格,假设是打字错误 (?:(?<=[a-z])(?=[A-Z]))|(?:(?<=[A-Z])(?=[a-z])) 它将把个人身份证号码转换成个人身份证号码 看到这个了吗 替换大小写更改
(?:(?<=[a-z])(?=[A-Z]))|(?:(?<=[A-Z])(?=[a-z]))
它将把个人身份证号码转换成个人身份证号码
看到这个了吗
替换大小写更改,但每个单词都以大写字母开头
如果你说每个单词都以大写字母开头,那么你可以这样做
(?:(?<=[a-z])(?=[A-Z]))|(?:(?<=[A-Z])(?=[A-Z][a-z]))
这将从
个人识别号码
只是另一个测试
OtherWordWithID
再测试
这个
个人身份证号码
再做一次测试
其他\u单词\u和\u ID
还有一些测试
请参阅此非正则表达式解决方案以防万一
string str = "personalIDnumber";
var result =
Enumerable.Range(0, str.Length - 1)
.Where(i => char.IsUpper(str[i]) != char.IsUpper(str[i + 1]))
.ToList();
string resultString = result.Aggregate(str, (current, i) => current.Insert(i + 1 + result.IndexOf(i), "_"));
结果存储了一个位置列表,其中必须插入一个uu,聚合函数将插入它。在本例中,您还将空格替换为下划线。这也是你要找的吗?还有,你试过什么?空白不是问题,我只是试着在每一个大小写的变化上都加下划线,我试着在每个大写字母上拆分,但都不起作用,现在我试着检查每个字符的大小写,并将其大小写与前后每个字符的大小写进行比较。Thanks可能是Thank you stema的副本,我会尝试一下并让你知道。对不起,这是有效的,但我还有另一个案例失败,如果我有“personelIDNumber”,我想获得“personal_ID_Number”。现在它给出了个人识别号。我该如何区分最后一个大写字母是属于最后一个单词还是下一个单词的第一个?我认为没有办法,因为模式不知道这个词的意思。或者你说每个单词都以大写字母开头。我用了?x[A-Z][A-Z,0-9]+|[A-Z]+?![a-z]带$1,我得到了带in的输出,如果字符串以大写字母开头,我去掉了第一个下划线形式的字符串。谢谢大家。
string str = "personalIDnumber";
var result =
Enumerable.Range(0, str.Length - 1)
.Where(i => char.IsUpper(str[i]) != char.IsUpper(str[i + 1]))
.ToList();
string resultString = result.Aggregate(str, (current, i) => current.Insert(i + 1 + result.IndexOf(i), "_"));