在c#代码中格式化适合c#的类名

本文关键字:格式化 代码 | 更新日期: 2023-09-27 17:51:01

我正在用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.

在c#代码中格式化适合c#的类名

您可以使用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"

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