在C#代码中为C#格式化正确的类名

时间:2013-01-09 08:33:18

标签: c# string

我在C#中生成C#代码,我想将字符串格式化为正确的C#类。有没有图书馆可以做到这一点?我需要替换禁用的字符,PascalCase字符串(在“_”之间)等。

我将参数“ClassName”传递给T4模板,我想将该参数转换为正确的C#类名。

离。

鉴于:

ClassName = "This_is_MY_CLASS Name"

然后:我想得到

ProperClassName = "This_Is_My_Class_Name" // or "This_Is_My_Classname", both would be acceptable.

2 个答案:

答案 0 :(得分:1)

您可以使用TextInfo

string className = "This_is_MY_CLASS Name";

string newName = new CultureInfo(CultureInfo.CurrentCulture.LCID, false).TextInfo.ToTitleCase(className .ToLower()).Replace(" ","_");

返回:"This_Is_My_Class_Name"

如果你想删除大多数非法字符你可以做这样的事情

    string className = "This_is_MY_CLASS Name/with<silly|chars";
    var invalid = System.IO.Path.GetInvalidFileNameChars().Concat(new char[]{' '});

    string newName = new string( new CultureInfo(CultureInfo.CurrentCulture.LCID, false)
        .TextInfo.ToTitleCase(className.ToLower())
        .Select(s => invalid.Contains(s) ? '_' : s).ToArray());

   // returns: "This_Is_My_Class_Name_With_Silly_Chars"

答案 1 :(得分:0)

也许ToTitleCase方法会为你做一些工作,但是为了删除非法字符和其他东西,你必须自己写一些东西。在.net框架内,没有开箱即用的功能。