RxJava StringObservable

RxJava StringObservable

1. Introdução aStringObservable

Trabalhar com sequênciasString emRxJava pode ser desafiador; felizmenteRxJavaString nos fornece todos os utilitários necessários.

Neste artigo, cobriremosStringObservable, que contém alguns operadoresString úteis. Portanto, antes de começar, é aconselhável dar uma olhada emIntroductiontoRxJava primeiro.

2. Configuração do Maven

Para começar, vamos incluirRxJavaString entre nossas dependências:


  io.reactivex
  rxjava-string
  1.1.1

A versão mais recente do rxjava-string está disponível emMaven Central.

3. StringObservable

StringObservable é um operador útil para representar uma sequência potencialmente infinita deStrings codificados .

O operadorfrom lê um fluxo de entrada criando umObservable que emite sequências delimitadas por caracteres de matrizes de bytes:

Reading an infinite stream

porReactivex.io, usado emCC-BY

Podemos criar umObservable direto de umInputStream usando um operadorfrom:

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. Convertendo Bytes emStrings

Encoding/decoding infinite sequences from different charsets can be done using decode and encode operators.

Como o nome pode sugerir, eles simplesmente criarão umObservable que emite uma sequência codificada ou decodificada de matrizes de bytes ouStrings,, portanto,we could use it if we need to handle Strings in different charsets:

Decodificando uma matriz de bytesObservable:

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. DividindoStrings

StringObservable também tem alguns operadores convenientes para dividir as sequências deString:splitebyLine, criam um novoObservable que agrupa os dados de entrada gerando itens seguindo um padrão:

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. Unindo Strings

Complementares aos operadores da seção anterior estãojoinestringConcat, que concatenam itens deStringObservable emitindo uma única string dado um separador.

Além disso, observe que eles consumirão todos os itens antes de emitir uma saída.

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. Conclusão

Esta breve introdução aStringObservable demonstrou alguns casos de uso de manipulação deString usandoRxJavaString.

Exemplos neste tutorial e outros exemplos sobre como usar os operadoresStringObservable podem ser encontradosover on GitHub.