代码之家  ›  专栏  ›  技术社区  ›  Maurits Rijk

基于谓词拆分字符串

  •  6
  • Maurits Rijk  · 技术社区  · 16 年前

    我想根据谓词拆分字符串。举个例子:

    “image size test”应变为“image size test”

    注: Uppercased 字符是谓词

    当然,我可以编写一个简单的循环,遍历字符串,检查大写字符(谓词)并构建新的字符串。不过,我希望它更一般一点,基于任何谓词进行拆分。仍然不是很难实现,但是我想知道是否有一种优雅的方法可以使用 Linq .

    参考文献:

    1. Splitting a String with two criteria
    2 回复  |  直到 13 年前
        1
  •  3
  •   Paul Manzotti    16 年前

    我认为你不想把它分割成一个数组,而是在字符串中引入空格?如果是这样,可以使用正则表达式将每个大写字符替换为[空格]字符。不过,你得把领头的空间剪掉。

    抱歉,要回答完整的问题,您可以通过传入要匹配的正则表达式和替换匹配项的字符串来使其更通用。

    看着 http://msdn.microsoft.com/en-us/library/system.text.regularexpressions.matchevaluator.aspx ,是否不能将MatchEvaluator视为谓词?

        2
  •  2
  •   RameshVel    16 年前
            string test ="ImageSizeTest";
    
            string pattern = "[A-Z]";
            Regex AllCaps = new Regex(pattern);                       
    
            var fs = test.ToCharArray().Select(x =>
            {
                if (AllCaps.IsMatch(x.ToString()))
                    return " " + x.ToString();
    
                return x.ToString();
            }).ToArray();
    
            var resss =string.Join("",fs).Trim();