gpt4 book ai didi

c# - 学习 Rx : How can I parse an observable sequence of characters into an observable sequence of strings?

转载 作者:太空狗 更新时间:2023-10-30 00:51:02 24 4
gpt4 key购买 nike

这可能真的很简单,但我正处于 Rx 学习曲线的底部。我花了几个小时阅读文章、观看视频和编写代码,但我似乎对一些看起来应该非常简单的事情有心理障碍。

我正在从串行端口收集数据。我已使用 Observable.FromEventPattern 捕获 SerialDataReceived 事件并将其转换为可观察的字符序列。到目前为止一切顺利。

现在,我想根据分隔符解析该字符序列。不涉及换行符,但每个“数据包”都被一个前导码和一个终止符包围,都是单个字符。为了争论,假设它们是大括号 {}

所以如果我得到字符序列j u n k { H e l l o j u n k 在我的字符序列上,然后我想在我的字符串序列上发出 Hello{Hello}

我可能遗漏了一些简单的东西,但我什至无法开始弄清楚如何处理它。有什么建议吗?

最佳答案

这可以使用 PublishBuffer 轻松完成:

var source = "junk{Hello}junk{World}junk".ToObservable();
var messages = source
.Publish(o =>
{
return o.Buffer(
o.Where(c => c == '{'),
_ => o.Where(c => c == '}'));
})
.Select(buffer => new string(buffer.ToArray()));
messages.Subscribe(x => Console.WriteLine(x));
Console.ReadLine();

这个的输出是:

{Hello}
{World}

想法是您可以在调用 Buffer 时使用以下打开和关闭选择器。 Publish的使用是为了确保Buffer、开始选择器和结束选择器这三个共享同一个订阅。

source:  junk{Hello}junk{World}junk|
opening: ----{----------{----------|
closing: ------}|
closing: ------}|

关于c# - 学习 Rx : How can I parse an observable sequence of characters into an observable sequence of strings?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30289682/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com