1. Введение в StringObservable
Работа с последовательностями строк в
RxJava
может быть сложной; к счастью , RxJavaString
предоставляет нам все необходимые утилиты.
В этой статье мы рассмотрим StringObservable
, который содержит несколько полезных строковых
операторов. Поэтому, прежде чем приступить к работе, рекомендуется сначала ознакомиться с введением в RxJ ava .
2. Настройка Мавена
Для начала давайте включим RxJavaString
в число наших зависимостей:
<dependency>
<groupId>io.reactivex</groupId>
<artifactId>rxjava-string</artifactId>
<version>1.1.1</version>
</dependency>
Последняя версия rxjava -string доступна
на Maven Central .
3. StringObservable
StringObservable
— удобный оператор для представления потенциально бесконечной последовательности закодированных строк
.
Оператор 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<byte[]> observableByteStream = StringObservable.from(is);
// emits 8 byte array items
observableByteStream.subscribe(testSubscriber);
4. Преобразование байтов в строки
Кодирование/декодирование бесконечных последовательностей из разных кодировок можно выполнять с помощью операторов декодирования
и кодирования .
Как следует из их названия, они просто создадут Observable
, который выдает закодированную или декодированную последовательность байтовых массивов или строк,
поэтому мы могли бы использовать его, если нам нужно обрабатывать строки
в разных кодировках:
Декодирование массива байтов Observable
:
TestSubscriber testSubscriber = new TestSubscriber();
ByteArrayInputStream is = new ByteArrayInputStream(
"Lorem ipsum loream, Lorem ipsum lore".getBytes());
Observable<byte[]> byteArrayObservable = StringObservable.from(is);
Observable<String> stringObservable = StringObservable
.decode(byteArrayObservable, StandardCharsets.UTF_8);
// emits UTF-8 decoded strings,"Lorem ipsum loream, Lorem ipsum lore"
stringObservable.subscribe(testSubscriber);
5. Разделение строк
StringObservable
также имеет несколько удобных операторов для разделения строковых
последовательностей: split
и byLine,
оба создают новый Observable
, который разбивает входные данные на части, выводя элементы в соответствии с шаблоном:
от Reactivex.io
TestSubscriber testSubscriber = new TestSubscriber();
Observable<String> sourceObservable = Observable.just("Lorem ipsum loream,Lorem ipsum ", "lore");
Observable<String> splittedObservable = StringObservable.split(sourceObservable, ",");
// emits 2 strings "Lorem ipsum loream", "Lorem ipsum lore"
splittedObservable.subscribe(testSubscriber);
6. Соединение строк
Дополнением к операторам предыдущего раздела являются операторы join
и stringConcat
, которые объединяют элементы из String
Observable
, выдавая одну строку с заданным разделителем.
Также обратите внимание, что они будут потреблять все элементы перед выводом.
от Reactivex.io
TestSubscriber testSubscriber = new TestSubscriber();
Observable<String> sourceObservable = Observable.just("Lorem ipsum loream", "Lorem ipsum lore");
Observable<String> joinedObservable = StringObservable.join(sourceObservable, ",");
// emits single string "Lorem ipsum loream,Lorem ipsum lore"
joinedObservable.subscribe(testSubscriber);
7. Заключение
Это краткое введение в StringObservable
продемонстрировало несколько вариантов использования манипуляций со строками с помощью RxJavaString
.
Примеры из этого руководства и другие примеры использования операторов StringObservable
можно найти на GitHub .