【问题标题】:Regex to split on capital letters and numbers that are acronyms正则表达式拆分首字母缩写词的大写字母和数字
【发布时间】:2017-04-27 13:59:51
【问题描述】:

以下正则表达式模式将字符串拆分为大写字母(例如,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));
    }
}

【问题讨论】:

    标签: c# regex string


    【解决方案1】:

    这个怎么样?

    var pattern = @"(?<=[a-z])(?=[A-Z])|(?<=[A-Z])(?=[A-Z][a-z])|(?<=[a-z])(?=[0-9])";
    Regex.Split("2FAGetDatabase", pattern);
    //2FA Get Database
    Regex.Split("Get2FADatabase", pattern);
    //Get 2FA Database
    Regex.Split("GetDatabase2FA", pattern);
    //Get Database 2FA
    Regex.Split("GetIDEDatabase2FA", pattern);
    //Get IDE Database 2FA
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多