RxJava StringObservable

RxJava StringObservable

1. Введение вStringObservable

Работа с последовательностямиString вRxJava может быть сложной задачей; К счастью,RxJavaString предоставляет нам все необходимые утилиты.

В этой статье мы рассмотримStringObservable, который содержит несколько полезных операторовString. Поэтому перед началом работы рекомендуется сначала взглянуть наIntroductiontoRxJava.

2. Maven Setup

Для начала давайте включимRxJavaString в наши зависимости:


  io.reactivex
  rxjava-string
  1.1.1

Последняя версия rxjava-string доступна наMaven Central.

3. StringObservableс

StringObservable - удобный оператор для представления потенциально бесконечной последовательности закодированныхStrings .

Операторfrom читает входной поток, создаваяObservable, который выдает ограниченные символами последовательности байтовых массивов:

Reading an infinite stream

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, который разбивает входные данные, выводя элементы по шаблону:

StringObservable.split splitting strings in rxjava

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, выдавая одну строку с разделителем.

Кроме того, обратите внимание, что они будут потреблять все элементы, прежде чем отправлять выходные данные.

StringObservable.join joining strings

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.