Guava
Tratando Strings de forma fácil
Cenário 1
Com uma entrada de dados:
"Harry", null, "Ron", null, "Hermione"
Como chegamos em:
"Harry; Ron; Hermione"
Joiner
Joiner joiner = Joiner.on("; ").skipNulls();
joiner.join("Harry", null, "Ron", null, "Hermione");
cENÁRIO 2
3 Inteiros como entrada:
1,5,7
Como chegamos em:
"1,5,7"
Joiner
Joiner.on(",").join(Arrays.asList(1, 5, 7));
cenário 3
Com uma entrada de dados:
"Harry", null, "Ron", null, "Hermione"
Como chegamos em:
"Harry; Alex; Ron; Alex; Hermione"
JOINER
Joiner joiner = Joiner.on("; ").useForNull("Alex");
joiner.join("Harry", null, "Ron", null, "Hermione");
StringBUILDER
Nos casos onde não há controle sobre o input
final String[] input = new String[] {"dave", "john"};
final Joiner joiner = Joiner.on(",");
StringBuilder builder = joiner.appendTo(builder, input);
STRINGBUILDER
Aplicando uma restrição no joiner
final String[] input = new String[]{"dave", "john", null, "dan"};
final Joiner joiner = Joiner.on(",").skipNulls();
StringBuilder builder = joiner.appendTo(builder, input);
builder.toString();
Cool Stuff
Vamos com o joiner
montar os parametros de um HTTP GET
final Map input = new HashMap() {{
put("param", "v");
put("p2", "v2");
put("q", "java");
}};
final String result = Joiner.on("&")
.withKeyValueSeparator("=")
.join(input);
//p2=v2¶m=v&q=java
CENÁRIO 4
Com uma entrada de dados:
"dave,john,matt"
Como chegamos em:
[dave, john, matt]
splitter
Splitter.on(",").split(stringToSplit);
CENÁRIO 5
Com uma entrada de dados:
"dave ,john,, matt"
Como chegamos em:
[dave, john, matt]
SPLITTER
final Iterable result = Splitter.on(",")
.omitEmptyStrings()
.trimResults()
.split(stringToSplit);
Strings
-
nullToEmpty
-
repeat
-
commonPrefix
-
commonSuffix
-
padEnd
CharMatcher
Alguns CharMatchers prontos:
ANY - DIGIT - NONE
JAVA_LETTER - JAVA_LOWER_CASE
JAVA_UPPER_CASE - WHITESPACE
JAVA_DIGIT - ASCII - INVISIBLE
SINGLE_WIDTH - JAVA_LETTER_OR_DIGIT
CENÁRIO 6
Conta a quatidade de letras ou digitos na string:
"M4U 20015"
CHArMATCHER
CharMatcher letterOrDigitMatcher = CharMatcher.JAVA_LETTER_OR_DIGIT;
letterOrDigitMatcher.countIn("M4U 20015");
MATCHING
letterOrDigitMatcher.matchesAllOf("AB12"); //true
letterOrDigitMatcher.matchesAllOf(" AB12 "); //false
NOT MATCHING
letterOrDigitMatcher.matchesNoneOf("_?=)(") //true
CharMatcher.WHITESPACE
Removendo espaços em branco
whiteSpaceMatcher.removeFrom("Nos <3 M4U") //Nos<3M4U
CharMatcher.DIGIT
Retendo todos os números da frase:
digitMatcher.retainFrom("numero 1, numero 2, nuemro 3") //123
CharMatcher.DIGIT
Achando o indice do primeiro digito na palavra
CharMatcher.DIGIT.indexIn("blink182") //5
REGEX FACIL
CharMatcher largeAtoZ = CharMatcher.inRange('A', 'Z');
CharMatcher aToZ = CharMatcher.inRange('a', 'z').or(largeAtoZ);
aToZ.matchesAllOf("Alex") //true