Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 基于谓词拆分字符串_C#_Linq - Fatal编程技术网

C# 基于谓词拆分字符串

C# 基于谓词拆分字符串,c#,linq,C#,Linq,我想根据谓词拆分一个字符串。例如: “ImageSizeTest”应变为“图像大小测试” 注意:大写的字符是谓词 当然,我可以编写一个简单的循环,遍历字符串,检查大写字符(谓词)并构建新字符串。然而,我希望这是一个更一般的,分裂的基础上任何谓词。仍然不是很难实现,但我想知道是否有一种优雅的方法可以使用Linq来实现这一点 参考: 我认为您不想将其拆分为数组,而是在字符串中引入空格?如果是这样,您可以使用正则表达式将每个大写字符替换为[space]字符。不过,您需要修剪前导空格 很抱歉,要回答完

我想根据谓词拆分一个字符串。例如:

“ImageSizeTest”应变为“图像大小测试”

注意:
大写的
字符是谓词

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

参考:


  • 我认为您不想将其拆分为数组,而是在字符串中引入空格?如果是这样,您可以使用正则表达式将每个大写字符替换为[space]字符。不过,您需要修剪前导空格

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


    看,你能不能把MatchRealter作为你的谓词吗?< /P>我想我应该更清楚地解释我自己:我想能够使用任何谓词函数:'BooMy谓词(Char C)''添加了关于MatchEvaluator的部分。这是否涵盖了您对谓词的需求?MatchEvaluator看起来更像我要执行的操作(例如插入空格)。但是+1,因为这非常有用。您可以提供Regex模式作为参数,以及MatchEvaluator。这难道不能为您提供一种通用的拆分方法吗?谢谢!我决定将Regex.Replace与MatchEvaluator结合使用。这不是一个100%通用的解决方案,但目前已经足够好了,值得投票表决。我已经为想要实际可谓词字符串的人完成了:-)。拆分扩展名:
            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();