gpt4 book ai didi

c# - 使用 RegEx 将字符串转换为 Pascal 大小写

转载 作者:行者123 更新时间:2023-11-30 12:38:23 24 4
gpt4 key购买 nike

我正在尝试使用 RegEx.Replace将字符串转换为 Pascal 大小写。 RegEx 不是必需的,但我认为这可能会更容易。以下是我尝试转换的一些示例测试用例:

simple simon says       => SimpleSimonSays
SIMPLE SIMON SaYs => SimpleSimonSays
simple_simon_says => SimpleSimonSays
simple simon says => SimpleSimonSays
simpleSimonSays => SimpleSimonSays
simple___simon___ says => SimpleSimonSays

我目前使用的方法没有使用 RegEx,但它在上面 5 个示例中的 4 个上都能正常工作:

internal static string GetPascalCaseName(string name)
{
string s = System.Globalization.CultureInfo.CurrentCulture.
TextInfo.ToTitleCase(name.ToLower()).Replace(" ", "").Replace("_", "");

return s;
}

失败的一个例子是 simpleSimonSays。它目前返回 SimpleSimonsays 而不是 SimpleSimonSays。我怎样才能在所有 4 种情况下使用它?

编辑

所以基本上,如果单词之间有空格、下划线或大写字符,它们就会被区分。此外,多个空格和/或多个下划线应被视为一个。基本上空格和下划线应该被忽略并用作下一个字母应该是大写字母的信号。像这样:

simple_____simon___   says => SimpleSimonSays

最佳答案

我有一个技巧可以解决你的问题。使用正则表达式,拆分单词并在单词中为没有空格或下划线的单词引入一个空格,这是驼峰式的(就像这个 simpleSimonSays)。修改你的方法,

internal static string GetPascalCaseName(string name)
{
if (!name.Contains(" ")) {
name = Regex.Replace(name, "(?<=[a-z])(?=[A-Z])", " ");
}
string s = System.Globalization.CultureInfo.CurrentCulture.
TextInfo.ToTitleCase(name.ToLower()).Replace(" ", "").Replace("_", "");

return s;
}

你方法中的这一新行,

name = Regex.Replace(name, "(?<=[a-z])(?=[A-Z])", " ");

通过在它们之间引入一个空格来拆分驼峰式单词,使它们与您没有困难的其他单词一样。

对于这个输入,

simpleSimonSays

它输出这个,

SimpleSimonSays

对于其余的输入,它仍然有效。此策略甚至适用于部分驼峰式和部分空格或下划线的单词。

关于c# - 使用 RegEx 将字符串转换为 Pascal 大小写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53268333/

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