c# – 带有被动扩展的分区序列
发布时间:2020-12-16 02:01:06 所属栏目:百科 来源:网络整理
导读:关于RX,我有一个小问题.我有一个从键盘进来的符号流,我需要将它们分成组.当’;’时应该启动一个新组符号来自流.简单来说,我需要一个类似Buffer的运算符,但是当某个条件为真时触发,而不是在一段时间延迟或事件计数之后触发.有没有办法用已经存在于RX中的运算
关于RX,我有一个小问题.我有一个从键盘进来的符号流,我需要将它们分成组.当’;’时应该启动一个新组符号来自流.简单来说,我需要一个类似Buffer的运算符,但是当某个条件为真时触发,而不是在一段时间延迟或事件计数之后触发.有没有办法用已经存在于RX中的运算符来构建它,还是应该自己注册?
解决方法
这是一个来源.
var source = new[] { 'a','b',';','c','d','e',';' }.ToObservable(); 这是你要求的: var groups = source // Group the elements by some constant (0) // and end the group when we see a semicolon .GroupByUntil(x => 0,group => group.Where(x => x == ';')) 这是一种使用它的方法: groups // Log that we're on the next group now. .Do(x => Console.WriteLine("Group: ")) // Merge / Concat all the groups together // {{a..b..;}..{c..d..e..;}} => {a..b..;..c..d..e..;} .Merge() // Ignore the semicolons? This is optional,I suppose. .Where(x => x != ';') // Log the characters! .Do(x => Console.WriteLine(" {0}",x)) // Make it so,Number One! .Subscribe(); 输出: Group: a b Group: c d e (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |