根据谓词拆分字符串

时间:2010-02-15 10:39:12

标签: c# linq

我想基于谓词拆分字符串。举个例子:

“ImageSizeTest”应成为“图像尺寸测试”

注意:Uppercased字符是谓词

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

参考:

  1. Splitting a String with two criteria

2 个答案:

答案 0 :(得分:3)

我认为你不想将它拆分成数组,而是将空格引入字符串?如果是这样,您可以使用正则表达式将每个大写字符替换为[space]字符。你需要修剪领先的空间。

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

查看http://msdn.microsoft.com/en-us/library/system.text.regularexpressions.matchevaluator.aspx,你不能认为MatchEvaluator是你的谓词吗?

答案 1 :(得分:2)

        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();