给出以下字符串: “ EMAIL_LOG”
我想将其转换为: EmailLog
我有执行此工作的这段代码:
private static string TitleCaseConvert(string title)
{
CultureInfo cultureInfo = Thread.CurrentThread.CurrentCulture;
TextInfo textInfo = cultureInfo.TextInfo;
title = title.Replace("_", " ").ToLower();
title = textInfo.ToTitleCase(title);
title = title.Replace(" ", "");
return title;
}
我只是想知道是否有更好的建议来进行这种转换,或者是一个更优雅的建议?
谢谢。
答案 0 :(得分:2)
您可以使用Split()
分割_
个字符,然后使用StringBuilder
重构输出字符串。该应该的效果更好,因为您使用StringBuilder
而不是每次都构造新的字符串:
private static string ToPascalCase(string input)
{
if(input == null)
{
throw new ArgumentNullException("input");
}
TextInfo textInfo = CultureInfo.CurrentCulture.TextInfo;
var sb = new StringBuilder();
foreach(var part in input.Split('_'))
{
sb.Append(textInfo.ToTitleCase(part.ToLower()));
}
return sb.ToString();
}
请注意,我正在使用CultureInfo.CurrentCulture
静态属性。我认为它可以更准确地描述您想要的东西...
提琴here
答案 1 :(得分:1)
如何在一个语句中这样做,像这样:
private static string TitleCaseConvert(string title)
{
return new CultureInfo("en").TextInfo.ToTitleCase(title.ToLower().Replace("_", " ")).Replace(" ", "");
}
答案 2 :(得分:0)
如果您追求原始性能,则可以直接在char数组上进行操作:
private static string TitleCaseConvert(string title)
{
int wordStart = 0;
char[] result = new char[title.Length];
int ri = 0;
for (int i = 0; i < title.Length; ++i)
{
if (title[i] == '_')
{
wordStart = i + 1;
}
else if (i == wordStart)
{
result[ri++] = Char.ToUpper(title[i]);
}
else
{
result[ri++] = Char.ToLower(title[i]);
}
}
return new String(result, 0, ri);
}
否则,StringBuilder
实现可能更短,更易读。
答案 3 :(得分:0)
您可以在这件事上抛Regex.Replace()
来挑选第一个字符,转储下划线并将其大写。
title = Regex.Replace("this_is_a_test", @"(^|_)([a-z])", m => m.ToString().Replace("_","").ToUpper());
答案 4 :(得分:0)
使用Microsoft.VisualStudio
的替代方法:
var title = Strings.StrConv("EMAIL_LOG", VbStrConv.ProperCase).Replace("_", "");
使用Humanizer库:
var title = "EMAIL_LOG".ToLower().Pascalize();
答案 5 :(得分:-1)
在任何库中,您都拥有_.camelCase
的{{1}}函数。
lodash
我们添加(也来自_.camelCase("EMAIL_LOG") // "emailLog"
)lodash
函数以将第一个字符大写。
_.upperFirst
骆驼套
骆驼案是写复合词或短语这样的做法 短语中间的每个单词或缩写都以 大写字母,中间没有空格或标点符号。
Lodash
Lodash是一个JavaScript库,可为 使用功能编程范例进行常见的编程任务。