gpt4 book ai didi

c# - 正则表达式。驼峰式下划线。忽略第一次出现

转载 作者:IT王子 更新时间:2023-10-29 04:25:40 27 4
gpt4 key购买 nike

例如:

thisIsMySample 

应该是:

this_Is_My_Sample

我的代码:

System.Text.RegularExpressions.Regex.Replace(input, "([A-Z])", "_$0", System.Text.RegularExpressions.RegexOptions.Compiled);

它工作正常,但如果输入更改为:

ThisIsMySample

输出将是:

_This_Is_My_Sample

如何忽略第一次出现?

最佳答案

非正则表达式解决方案

string result = string.Concat(input.Select((x,i) => i > 0 && char.IsUpper(x) ? "_" + x.ToString() : x.ToString())); 

似乎也相当快:正则表达式:2569 毫秒,C#:1489 毫秒

Stopwatch stp = new Stopwatch();
stp.Start();
for (int i = 0; i < 1000000; i++)
{
string input = "ThisIsMySample";
string result = System.Text.RegularExpressions.Regex.Replace(input, "(?<=.)([A-Z])", "_$0",
System.Text.RegularExpressions.RegexOptions.Compiled);
}
stp.Stop();
MessageBox.Show(stp.ElapsedMilliseconds.ToString());
// Result 2569ms

Stopwatch stp2 = new Stopwatch();
stp2.Start();
for (int i = 0; i < 1000000; i++)
{
string input = "ThisIsMySample";
string result = string.Concat(input.Select((x, j) => j > 0 && char.IsUpper(x) ? "_" + x.ToString() : x.ToString()));
}
stp2.Stop();
MessageBox.Show(stp2.ElapsedMilliseconds.ToString());
// Result: 1489ms

关于c# - 正则表达式。驼峰式下划线。忽略第一次出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18781027/

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