gpt4 book ai didi

c# - 正则表达式:将驼峰大小写转换为带下划线的所有大写

转载 作者:可可西里 更新时间:2023-11-01 08:16:19 28 4
gpt4 key购买 nike

可以使用什么正则表达式进行以下转换?

City -> CITY
FirstName -> FIRST_NAME
DOB -> DOB
PATId -> PAT_ID
RoomNO -> ROOM_NO

以下几乎可以工作 - 它只是在单词的开头添加了一个额外的下划线:

var rgx = @"(?x)( [A-Z][a-z,0-9]+ | [A-Z]+(?![a-z]) )";

var tests = new string[] { "City",
"FirstName",
"DOB",
"PATId",
"RoomNO"};

foreach (var test in tests)
Console.WriteLine("{0} -> {1}", test,
Regex.Replace(test, rgx, "_$0").ToUpper());


// output:
// City -> _CITY
// FirstName -> _FIRST_NAME
// DOB -> _DOB
// PATId -> _PAT_ID
// RoomNO -> _ROOM_NO

最佳答案

根据 John M Gant 的添加下划线然后大写的想法,我认为这个正则表达式应该可行:

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

替换为:

$1$3_$2$4

您可以重命名捕获区域以使替换字符串更易读。只有 $1 或 $3 应该有值,与 $2 和 $4 相同。一般的想法是在以下情况下添加下划线:

  • 有两个大写字母和一个小写字母,在两个大写字母之间放置下划线。 (PATId -> PAT_Id)
  • 有一个小写字母跟一个大写字母,下划线放在两者中间。 (房间号 -> 房间号和名字 -> 名字)

希望这对您有所帮助。

关于c# - 正则表达式:将驼峰大小写转换为带下划线的所有大写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4511087/

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