2015-04-23 61 views
0

考虑到用户输入的字符串:高效的方式来标记有条件

“大型机/ PL/SQL;软件测试/ PL/SQL /项目管理/”

什么是来标记串这样的好方法如果它是“PL/SQL”的一部分,则保留“/”,但不以其他方式给出标记:

“Mainframes”,“pl/sql”,“Software Testing”,“PL/SQL”项目管理“

这是因为用户可能不小心输入了'/'字符作为分隔符。

回答

1

如果令牌的顺序并不重要,那么这样的事情可能工作:

public IEnumerable<string> Tokenise() 
{ 
    var input = "Mainframes/pl/ sql; Software Testing/PL/SQL/Project management/"; 
    var results = new List<string>(); 

    foreach (Match match in Regex.Matches(input, @"pl\s*/\s*sql", RegexOptions.IgnoreCase)) 
    { 
     results.Add(match.Value); 
    } 

    input = Regex.Replace(input, @"pl\s*/\s*sql", string.Empty, RegexOptions.IgnoreCase); 

    results.AddRange(input.Split(new []{'/'}, StringSplitOptions.RemoveEmptyEntries)); 

    return results; 
} 

这开始通过搜索PL/SQL令牌(占空格和大写字母的差异),然后剥离它们从输入字符串中输出,并对剩余的“/”字符执行简单拆分。缺点是令牌的顺序与输入字符串不同。