1
下面的正则表达式拆分大写字母串(如:GetDatabaseIDE
成为Get Database IDE
)正则表达式的大写字母和那些缩略词号码拆分
Regex.Matches("GetDatabaseIDE", @"([A-Z]+)([^A-Z])*").Cast<Match>().Select(m => m.Value);
这怎么可能正则表达式模式改为包括数字和依旧促进当前的回报模式? (如:GetDatabase2FA
应该返回Get Database 2FA
)
编辑:
所需正则表达式模式应该分裂串像下面..
2FAGetDatabase ---> 2FA Get Database
Get2FADatabase ---> Get 2FA Database
GetDatabase2FA ---> Get Database 2FA
我的解决方案:
public static string ToSentence(this string text)
{
string pattern;
if (text.Any(char.IsDigit))
{
pattern = @"(?<=[a-z])(?=[A-Z])|(?<=[A-Z])(?=[A-Z][a-z])|(?<=[a-z])(?=[0-9])";
return string.Join(" ", Regex.Split(text, pattern));
}
else
{
pattern = @"([A-Z]+)([^A-Z])*";
return string.Join(" ", Regex.Matches(text, @"([A-Z]+)([^A-Z])*").Cast<Match>().Select(m => m.Value));
}
}