Извините, если название не очень ясное, я не могу придумать ничего лучшего ...
Я получаю пользовательский ввод в виде IObservable<char>
, и я хотел бы преобразовать его в IObservable<char[]>
, группируя символы каждый раз, когда пользователь перестает печатать в течение более 1 секунды. Так, например, если ввод выглядит следующим образом:
h
e
l
l
o
(pause)
w
o
r
l
d
(pause)
!
(pause)
Я бы хотел, чтобы результат был:
['h', 'e', 'l', 'l', 'o']
['w', 'o', 'r', 'l', 'd']
['!']
Я подозреваю, что решение довольно простое, но я не могу найти правильный подход ... Я пытался использовать Buffer
, GroupByUntil
, Throttle
и некоторые другие, но безрезультатно.
Любая идея приветствуется!
РЕДАКТИРОВАТЬ: У меня есть кое-что, что почти работает:
_input.Buffer(() => _input.Delay(TimeSpan.FromSeconds(1)))
.ObserveOnDispatcher()
.Subscribe(OnCompleteInput);
Но мне нужно сбрасывать задержку каждый раз, когда набирается новый символ ...