- public string ApplyPascalCase(string name)
- {
- string notStartingAlpha = Regex.Replace(name, "^[^a-zA-Z]+", "");
- string workingString = ToLowerExceptCamelCase(notStartingAlpha);
- workingString = RemoveSeparatorAndCapNext(workingString);
- return workingString;
- }
- public string ToLowerExceptCamelCase(string input)
- {
- char[] chars = input.ToCharArray();
- for (int i = 0; i < chars.Length; i++)
- {
- int left = (i > 0 ? i - 1 : i);
- int right = (i < chars.Length - 1 ? i + 1 : i);
- if (i != left && i != right)
- {
- if (Char.IsUpper(chars[i]) && Char.IsLetter(chars[left]) && Char.IsUpper(chars[left]))
- {
- chars[i] = Char.ToLower(chars[i], CultureInfo.InvariantCulture);
- }
- else if (Char.IsUpper(chars[i]) && Char.IsLetter(chars[right]) && Char.IsUpper(chars[right]))
- {
- chars[i] = Char.ToLower(chars[i], CultureInfo.InvariantCulture);
- }
- else if (Char.IsUpper(chars[i]) && !Char.IsLetter(chars[right]))
- {
- chars[i] = Char.ToLower(chars[i], CultureInfo.InvariantCulture);
- }
- }
- }
- if (chars.Length > 0)
- chars[chars.Length - 1] = Char.ToLower(chars[chars.Length - 1], CultureInfo.InvariantCulture);
- return new string(chars);
- }
- public string RemoveSeparatorAndCapNext(string input)
- {
- string dashUnderscore = "-_";
- string workingString = input;
- char[] chars = workingString.ToCharArray();
- int under = workingString.IndexOfAny(dashUnderscore.ToCharArray());
- while (under > -1)
- {
- chars[under + 1] = Char.ToUpper(chars[under + 1], CultureInfo.InvariantCulture);
- workingString = new String(chars);
- under = workingString.IndexOfAny(dashUnderscore.ToCharArray(), under + 1);
- }
- chars[0] = Char.ToUpper(chars[0], CultureInfo.InvariantCulture);
- workingString = new string(chars);
- return Regex.Replace(workingString, "[-_]", "");
- 注:输入字符串必须以: CODE-NAME 或者 CODE_NAME方式才可正确识别
实现字符串以PascalCase方式命名
最新推荐文章于 2023-11-13 16:58:30 发布
本文介绍了一个使用 C# 编写的实用函数,该函数能够将不同格式的字符串转换成帕斯卡命名法。通过具体代码展示了如何处理非字母开头的字符串,并实现去除下划线及短横线分隔符,同时确保每个单词首字母大写。
2585

被折叠的 条评论
为什么被折叠?



