RxJava StringObservable
1. Введение вStringObservable
Работа с последовательностямиString вRxJava может быть сложной задачей; К счастью,RxJavaString предоставляет нам все необходимые утилиты.
2. Maven Setup
Для начала давайте включимRxJavaString в наши зависимости:
io.reactivex
rxjava-string
1.1.1
Последняя версия rxjava-string доступна наMaven Central.
3. StringObservableс
StringObservable - удобный оператор для представления потенциально бесконечной последовательности закодированныхStrings .
Операторfrom читает входной поток, создаваяObservable, который выдает ограниченные символами последовательности байтовых массивов:
Reactivex.io, используется вCC-BY
Мы можем создатьObservable прямо изInputStream, используя операторfrom:
TestSubscriber testSubscriber = new TestSubscriber();
ByteArrayInputStream is = new ByteArrayInputStream("Lorem ipsum loream, Lorem ipsum lore".getBytes());
Observable observableByteStream = StringObservable.from(is);
// emits 8 byte array items
observableByteStream.subscribe(testSubscriber);
4. Преобразование байтов вStrings
Encoding/decoding infinite sequences from different charsets can be done using decode and encode operators.
Как можно предположить из их названия, они просто создадутObservable, который испускает закодированную или декодированную последовательность байтовых массивов илиStrings,, следовательно,we could use it if we need to handle Strings in different charsets:
Расшифровка байтового массиваObservable:
TestSubscriber testSubscriber = new TestSubscriber();
ByteArrayInputStream is = new ByteArrayInputStream(
"Lorem ipsum loream, Lorem ipsum lore".getBytes());
Observable byteArrayObservable = StringObservable.from(is);
Observable stringObservable = StringObservable
.decode(byteArrayObservable, StandardCharsets.UTF_8);
// emits UTF-8 decoded strings,"Lorem ipsum loream, Lorem ipsum lore"
stringObservable.subscribe(testSubscriber);
5. РазделениеStrings
StringObservable также имеет несколько удобных операторов для разделения последовательностейString:split иbyLine, создают новыйObservable, который разбивает входные данные, выводя элементы по шаблону:
TestSubscriber testSubscriber = new TestSubscriber();
Observable sourceObservable = Observable.just("Lorem ipsum loream,Lorem ipsum ", "lore");
Observable splittedObservable = StringObservable.split(sourceObservable, ",");
// emits 2 strings "Lorem ipsum loream", "Lorem ipsum lore"
splittedObservable.subscribe(testSubscriber);
6. Строки соединения
В дополнение к операторам предыдущего раздела используютсяjoin иstringConcat, которые объединяют элементы изStringObservable, выдавая одну строку с разделителем.
Кроме того, обратите внимание, что они будут потреблять все элементы, прежде чем отправлять выходные данные.
TestSubscriber testSubscriber = new TestSubscriber();
Observable sourceObservable = Observable.just("Lorem ipsum loream", "Lorem ipsum lore");
Observable joinedObservable = StringObservable.join(sourceObservable, ",");
// emits single string "Lorem ipsum loream,Lorem ipsum lore"
joinedObservable.subscribe(testSubscriber);
7. Заключение
Это краткое введение вStringObservable продемонстрировало несколько вариантов использования манипуляции сString с использованиемRxJavaString.
Примеры в этом руководстве и другие примеры использования операторовStringObservable можно найти вover on GitHub.