java中仓库表怎么命名_【代码仓库】命名风格转化

///

/// 系统扩展 - 命名风格

///

public static partial class Extensions

{

private const int LetterUpperLowerDistance = 'a' - 'A';

private static ExpiredCache _cache = new ExpiredCache();

///

/// 获取字符串的命名规范

/// 支持类型:UpperCamel、lowerCamel、AllUpper、AllLower、FirstUpper

///

///

/// 前缀

/// 后缀

///

public static NamingStyle GetNamingStyle(this string name, string prefix = "", string suffix = "")

{

if (_cache.ContainsKey(name))

return _cache[name];

//移除前后缀

name = name.RemovePrefix(prefix);

name = name.RemoveSuffix(suffix);

var type = GetNamingStyle(name);

_cache[name] = type;

return type;

}

private static NamingStyle GetNamingStyle(this string name)

{

//如果含有下划线字符

if (name.Contains("_"))

{

if (name.IsRegexMatch("^[A-Z_]+$", RegexOptions.Compiled | RegexOptions.Singleline))

return NamingStyle.AllUpper;

if (name.IsRegexMatch("^[a-z_]+$", RegexOptions.Compiled | RegexOptions.Singleline))

return NamingStyle.AllLower;

if (name[0].IsUpperLetter() && name.Substring(1).IsRegexMatch("^[a-z_]+$", RegexOptions.Compiled | RegexOptions.Singleline))

return NamingStyle.FirstUpper;

return NamingStyle.NonStandard;

}

if (name.IsRegexMatch("^[A-Z]+$", RegexOptions.Compiled | RegexOptions.Singleline))

return NamingStyle.AllUpper;

if (name.IsRegexMatch("^[a-z]+$", RegexOptions.Compiled | RegexOptions.Singleline))

return NamingStyle.AllLower;

if (!name.IsRegexMatch("^[A-Za-z]+$", RegexOptions.Compiled | RegexOptions.Singleline)) return NamingStyle.NonStandard;

return name[0].IsUpperLetter() ? NamingStyle.UpperCamel : NamingStyle.LowerCamel;

}

///

/// 转换字符串命名规范

/// 支持类型:UpperCamel、lowerCamel、AllUpper、AllLower、FirstUpper

///

///

///

///

///

///

public static string ConvertNamingStyle(this string name, NamingStyle toStyle, string prefix = "",

string suffix = "")

{

//移除前后缀

name = name.RemovePrefix(prefix);

name = name.RemoveSuffix(suffix);

if (name.GetNamingStyle() == NamingStyle.NonStandard)

return name;

var toName = toStyle switch

{

NamingStyle.LowerCamel => name.ToLowerCamel(),

NamingStyle.AllUpper => name.ToAllUpper(),

NamingStyle.AllLower => name.ToAllLower(),

NamingStyle.FirstUpper => name.ToFirstUpper(),

NamingStyle.UpperCamel => name.ToUpperCamel(),

_ => name

};

return $"{prefix}{toName}{suffix}";

}

//UpperCamel To Other

private static string UpperCamelToLowerCamel(this string name) => !name.IsUpperCamel() ? name : (char)(name[0] + LetterUpperLowerDistance) + name.Substring(1);

private static string UpperCamelToAllUpper(this string name) => !name.IsUpperCamel() ? name : string.Join('_', name.UpperCamelSplit().Select(letter => letter.ToUpper()));

private static string UpperCamelToAllLower(this string name) => !name.IsUpperCamel() ? name : string.Join('_', name.UpperCamelSplit().Select(letter => letter.ToLower()));

private static string UpperCamelToFirstUpper(this string name) => !name.IsUpperCamel() ? name : name[0] + name.UpperCamelToAllLower().Substring(1);

//LowerCamel To Other

private static string LowerCamelToUpperCamel(this string name) => !name.IsLowerCamel() ? name : (char)(name[0] - LetterUpperLowerDistance) + name.Substring(1);

private static string LowerCamelToAllUpper(this string name) => !name.IsLowerCamel() ? name : name.LowerCamelToUpperCamel().UpperCamelToAllUpper();

private static string LowerCamelToAllLower(this string name) => !name.IsLowerCamel() ? name : name.LowerCamelToUpperCamel().UpperCamelToAllLower();

private static string LowerCamelToFirstUpper(this string name) => !name.IsLowerCamel() ? name : (char)(name[0] - LetterUpperLowerDistance) + name.LowerCamelToUpperCamel().UpperCamelToFirstUpper().Substring(1);

//AllUpper To Other

private static string AllUpperToUpperCamel(this string name) => !name.IsAllUpper() ? name : string.Join("", name.Split('_').Select(ToFirstUpperStyle));

private static string AllUpperToLowerCamel(this string name) => !name.IsAllUpper() ? name : (char)(name[0] + LetterUpperLowerDistance) + name.AllUpperToUpperCamel().Substring(1);

private static string AllUpperToAllLower(this string name) => !name.IsAllUpper() ? name : name.ToLower();

private static string AllUpperToFirstUpper(this string name) => !name.IsAllUpper() ? name : name[0] + name.AllUpperToAllLower().Substring(1);

//AllLower To Other

private static string AllLowerToUpperCamel(this string name) => !name.IsAllLower() ? name : string.Join("", name.Split('_').Select(ToFirstUpperStyle));

private static string AllLowerToLowerCamel(this string name) => !name.IsAllLower() ? name : name[0] + name.AllLowerToUpperCamel().Substring(1);

private static string AllLowerToAllUpper(this string name) => !name.IsAllLower() ? name : name.ToUpper();

private static string AllLowerToFirstUpper(this string name) => !name.IsAllLower() ? name : (char)(name[0] - LetterUpperLowerDistance) + name.Substring(1);

//FirstUpper To Other

private static string FirstUpperToUpperCamel(this string name) => !name.IsFirstUpper() ? name : string.Join("", name.Split('_').Select(ToFirstUpperStyle));

private static string FirstUpperToLowerCamel(this string name) => !name.IsFirstUpper() ? name : (char)(name[0] + LetterUpperLowerDistance) + name.FirstUpperToUpperCamel().Substring(1);

private static string FirstUpperToAllUpper(this string name) => !name.IsFirstUpper() ? name : name.ToUpper();

private static string FirstUpperToAllLower(this string name) => !name.IsFirstUpper() ? name : name.ToLower();

//Orthers To X

private static string ToUpperCamel(this string name)

{

return name.GetNamingStyle() switch

{

NamingStyle.LowerCamel => name.LowerCamelToUpperCamel(),

NamingStyle.AllUpper => name.AllUpperToUpperCamel(),

NamingStyle.AllLower => name.AllLowerToUpperCamel(),

NamingStyle.FirstUpper => name.FirstUpperToUpperCamel(),

_ => name

};

}

private static string ToLowerCamel(this string name)

{

return name.GetNamingStyle() switch

{

NamingStyle.UpperCamel => name.UpperCamelToLowerCamel(),

NamingStyle.AllUpper => name.AllUpperToLowerCamel(),

NamingStyle.AllLower => name.AllLowerToLowerCamel(),

NamingStyle.FirstUpper => name.FirstUpperToLowerCamel(),

_ => name

};

}

private static string ToAllUpper(this string name)

{

return name.GetNamingStyle() switch

{

NamingStyle.UpperCamel => name.UpperCamelToAllUpper(),

NamingStyle.LowerCamel => name.LowerCamelToAllUpper(),

NamingStyle.AllLower => name.AllLowerToAllUpper(),

NamingStyle.FirstUpper => name.FirstUpperToAllUpper(),

_ => name

};

}

private static string ToAllLower(this string name)

{

return name.GetNamingStyle() switch

{

NamingStyle.UpperCamel => name.UpperCamelToAllLower(),

NamingStyle.LowerCamel => name.LowerCamelToAllLower(),

NamingStyle.AllUpper => name.AllUpperToAllLower(),

NamingStyle.FirstUpper => name.FirstUpperToAllLower(),

_ => name

};

}

private static string ToFirstUpper(this string name)

{

return name.GetNamingStyle() switch

{

NamingStyle.UpperCamel => name.UpperCamelToFirstUpper(),

NamingStyle.LowerCamel => name.LowerCamelToFirstUpper(),

NamingStyle.AllUpper => name.AllUpperToFirstUpper(),

NamingStyle.AllLower => name.AllLowerToFirstUpper(),

_ => name

};

}

public static bool IsUpperLetter(this char letter) => letter >= 'A' && letter <= 'Z';

public static bool IsLowerLetter(this char letter) => letter >= 'a' && letter <= 'z';

public static bool IsLetter(this char letter) => letter.IsLowerLetter() || letter.IsUpperLetter();

public static string RemovePrefix(this string str, string prefix) => str.StartsWith(prefix) ? str.Substring(prefix.Length) : str;

public static string RemoveSuffix(this string str, string suffix) => str.EndsWith(suffix) ? str.Substring(0, str.Length - suffix.Length) : str;

public static bool IsUpperCamel(this string name) => name.GetNamingStyle() == NamingStyle.UpperCamel;

public static bool IsLowerCamel(this string name) => name.GetNamingStyle() == NamingStyle.LowerCamel;

public static bool IsAllUpper(this string name) => name.GetNamingStyle() == NamingStyle.AllUpper;

public static bool IsAllLower(this string name) => name.GetNamingStyle() == NamingStyle.AllLower;

public static bool IsFirstUpper(this string name) => name.GetNamingStyle() == NamingStyle.FirstUpper;

private static IEnumerable UpperCamelSplit(this string name)

{

foreach (Match match in Regex.Matches(name, "[A-Z][a-z]+", RegexOptions.Compiled | RegexOptions.Singleline))

yield return match.Value;

}

public static string ToFirstUpperStyle(string word)

{

if (!word.IsRegexMatch("^[a-z]+$", RegexOptions.Compiled | RegexOptions.Singleline | RegexOptions.IgnoreCase))

return word;

var newLetter = new char[word.Length];

for (var i = 0; i < word.Length; i++)

{

if (i == 0)

{

if (word[i].IsLowerLetter())

{

newLetter[i] = (char)(word[i] - LetterUpperLowerDistance);

}

else

{

newLetter[i] = word[i];

}

}

else

{

if (word[i].IsUpperLetter())

{

newLetter[i] = (char)(word[i] + LetterUpperLowerDistance);

}

else

{

newLetter[i] = word[i];

}

}

}

return new string(newLetter);

}

public static char ToUpper(char c) => c.IsLowerLetter() ? (char)(c - LetterUpperLowerDistance) : c;

public static char ToLower(char c) => c.IsUpperLetter() ? (char)(c + LetterUpperLowerDistance) : c;

}

public enum NamingStyle

{

NonStandard,

UpperCamel,

LowerCamel,

AllUpper,

AllLower,

FirstUpper

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值