gpt4 book ai didi

c# - 正则表达式 - PascalCase 到带下划线的小写

转载 作者:太空狗 更新时间:2023-10-29 18:31:46 25 4
gpt4 key购买 nike

我正在尝试将 PascalCase 属性名称(例如 Is24HourIs512)转换为带下划线的 JSON 样式小写(即 is_24_houris_512) 使用 C#。

到目前为止,我已经走了很远,但它不适用于多个数字。

([A-Z])([A-Z0-9][a-z])|([a-z0-9])([A-Z0-9])

用替换表达式($1$3_$2$4)

例如 "Is24Hour" 变为 "Is_24_Hour"(然后由 .ToLower() 小写)。但是 "Is512" 变成了 "Is_51_2"

最佳答案

使用String.ToLower为小写。

对于正则表达式,以下 seems to work :

((?<=.)[A-Z][a-zA-Z]*)|((?<=[a-zA-Z])\d+)

结合替换表达式:

_$1$2

这是一个完整的示例:

string strRegex = @"((?<=.)[A-Z][a-zA-Z]*)|((?<=[a-zA-Z])\d+)";
Regex myRegex = new Regex(strRegex, RegexOptions.Multiline);
string strTargetString = @"Is24Hour" + "\n" +
@"Is512" + "\n" + @"A12Hour4" + "\n" +
@"23AHourDay12" + "\n" + @"An8DAY512";

string strReplace = @"_$1$2";

return myRegex.Replace(strTargetString, strReplace).ToLower();

关于c# - 正则表达式 - PascalCase 到带下划线的小写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20951645/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com