sabato 3 settembre 2011

Controllo di spazio nullo o vuoto o Bianco Solo String in Java


. NET Framework 4 introduce un nuovo metodo sulla sua categoria String chiamato IsNullOrWhiteSpace che controlla se una stringa fornita è null, vuoto o consiste solo di "spazio bianco." Questo metodo è utile in aggiunta al metodo IsNullOrEmpty che è disponibile da . NET 2 . Questi potenzialmente molto utili (e comunemente utilizzati) i metodi non fanno parte del Java String JDK , ma in questo post guardo come Apache Commons Lang e Guava fornire metodi simili a queste o da cui metodi simili a questi possono essere facilmente scritti.
Un tipico "standard Java" approccio per rilevare se una stringa è nulla, è vuota, o è costituito esclusivamente da spazio bianco è come mostrato nel listato di codice successivo.
Java Approccio
/ **
 * Dimostrare la verifica di String che non è nullo, non vuoto, e non bianco
 * Spazio solo utilizzando le normali classi Java.
 *
 * @ Param String stringa da controllare per non nullo, non vuoto, e non bianco
 * Solo spazio.
 * @ Param {} @ codice vero se la stringa fornita non è nulla, non è vuoto, e
 * Ha almeno un carattere che non è considerato uno spazio bianco.
 * /
public static boolean isNotNullNotEmptyNotWhiteSpaceOnlyByJava (
   stringa String finale)
{
   stringa restituita = null & & string.isEmpty () & & string.trim () isEmpty ()!.;
}
Nel precedente esempio, si potrebbe confrontare la lunghezza delle stringhe piuttosto che chiamare il isEmpty () metodo. Ci sono altri approcci come pure compreso l'uso di espressioni regolari. Inoltre, il codice potrebbe essere resa più concisa non avendo il controllo individuale per il vuoto e semplicemente farlo tramite il trim (). isEmpty () chiamata.
La biblioteca di Google Guava può anche essere utilizzata efficacemente per determinare un non-null, stringa non vuota con almeno un non-spazio vuoto. Un esempio che viene mostrato di seguito.
Guava Approccio
/ / Com.google.common.base.Strings importazione;
/ **
 * Dimostrare la verifica di String che non è nullo, non vuoto, e non bianco
 * Spazio usando solo Guava.
 *
 * @ Param String stringa da controllare per non nullo, non vuoto, e non bianco
 * Solo spazio.
 * @ Param {} @ codice vero se la stringa fornita non è nulla, non è vuoto, e
 * Ha almeno un carattere che non è considerato uno spazio bianco.
 * /
public static boolean isNotNullNotEmptyNotWhiteSpaceOnlyByGuava (stringa String finale)
{
   ! ritorno Strings.isNullOrEmpty (stringa) & & string.trim () isEmpty ()!.;
}
L'approccio Guava usa sopra lo "standard Java" approccio per determinare che la stringa non è solo uno spazio bianco.Tuttavia, Guava fornisce il comodo Strings.isNullOrEmpty (String) metodo statico per determinare se una data stringa è nulla o vuota.
L'esempio usando Apache Commons Lang è l'approccio più semplice e conciso, come descritto nel listato di codice successivo.
Apache Commons Lang Approccio
/ / Org.apache.commons.lang.StringUtils importazione;
/ **
 * Dimostrare la verifica di String che non è nullo, non vuoto, e non bianco
 Spazio * solo usando Apache Commons Lang classi.
 *
 * @ Param String stringa da controllare per non nullo, non vuoto, e non bianco
 * Solo spazio.
 * @ Param {} @ codice vero se la stringa fornita non è nulla, non è vuoto, e
 * Ha almeno un carattere che non è considerato uno spazio bianco.
 * /
pubblico isNotNullNotEmptyNotWhiteSpaceOnlyByCommons static boolean (
   stringa String finale)
{
   ritorno StringUtils.isNotBlank (stringa);
}
Con Apache Commons Lang, una semplice chiamata fa tutto! L' (String) StringUtils.isNotBlank metodo statico fa esattamente quello che volevamo in questo caso particolare: controllare una stringa per assicurarsi che non è nullo, non vuoto, e non solo uno spazio bianco. La sua documentazione Javadoc come dice molto: 'Verifica se una stringa non è vuota (""), non nullo e non solo spazi bianchi.'
Gli approcci sopra e variazioni sul approcci di cui sopra può essere utilizzato in Java per determinare se una stringa non è nullo, non vuoto, e non solo uno spazio bianco. Sono facili da impiegare e le Apache Commons Lang approccio è particolarmente concisa. Tuttavia, sarebbe bello avere questo supporto come una parte standard del Java String . E 'difficile per me per finire un post senza parlare di Groovy, così ora ho transizione alla capacità di utilizzare il supporto dinamico Groovy di "aggiungere" metodi della classe String di Java a sostegno di questa verifica.
Il codice Groovy nel listato di codice seguente mostra come un metodo di istanza può essere aggiunto alla stringa per verificare queste condizioni. In questo caso, sto prendendo in prestito da nome Apache Commons Lang per il metodo e l'utilizzo di isNotBlank () per il nome del metodo iniettato.
Utilizzando metaClass.methodMissing a 'Add' isNotBlank () per String
java.lang.String.metaClass.methodMissing =
{String name, args ->
   if (nome == "isNotBlank")
   {
      / / Non è necessario verificare la presenza di nulla perché questo metodo non avrebbe potuto essere
      / / Richiamato da una stringa null. Estensione GDK Groovy di String ha il
      / / IsAllWhitespace () che restituisce {} @ codice vero per tutti gli spazi bianchi
      / / Compresa una stringa vuota.
      ritorno! delegate.isAllWhitespace ()
   }
}
Questo frammento di codice Groovy inietteranno un metodo di "isNotBlank ()" sulle istanze String quando invocazioni di un metodo di quel nome non vengono risolti ( manca il metodo ). Non ho un controllo nullo, perché un metodo di istanza, per sua natura, funziona solo su una non-null esempio. Il motivo i metodi discussi precedentemente controllato per nulla è che erano i metodi statici lavorando su un esempio fornito (e non loro stessi). Con i clienti e il Groovy operatore navigazione sicura , questo non è tanto di un deal-breaker come potrebbe essere in Java. L'esempio sopra riportato dimostra anche un metodo che estensione GDK Groovy è di String dispone: isAllWhitespace () .
Un vantaggio di cui sopra a livello di istanza approccio è che possiamo chiedere la stringa stessa se ​​è vuoto dello spazio bianco. Come avrete notato, non c'era bisogno di intercettare per archi in Groovy per implementare questo metodo come ilisAllWhitespace () metodo Groovy fornisce sull'estensione GDK di String conta in realtà una stringa vuota come tutto lo spazio bianco.
Supponiamo che vogliamo utilizzare un metodo statico in Groovy come gli esempi Java mostrato in precedenza in modo che nulla può essere gestita come bene. Perché questo è Groovy, possiamo semplicemente utilizzare Apache Commons Lang classe o la classe di Guava proprio come abbiamo fatto in Java. Ai fini realistici, che sarebbe un buon approccio. Ma per mettersi in mostra grooviness Groovy, l'approccio successivo è preferibile. In questo caso, un nuovo metodo statico è definito sulla stringa che implementa il controllo che abbiamo visto sopra. In questo modo il codice Groovy client di chiamare un metodo statico direttamente sulla stringa stessa per il controllo.
Utilizzando metaClass.static a 'Add' Nuovo Metodo statico a String
java.lang.String.metaClass.static.isNotNullNotEmptyNotWhitespaceOnly =
{Stringa String ->
   ritorno stringa! = null & &! string.isAllWhitespace ()
}
Quest'ultimo esempio rende possibile chiamare String.isNotNullNotEmptyNotWhitespaceOnly (String) su qualsiasi stringa di codice Groovy per verificare che per essere non nullo, non vuoto, e non solo uno spazio bianco. Viene inoltre illustrato come a iniettare un metodo statico in un oggetto esistente in Groovy.
Conclusione
Sarebbe un vantaggio minore aggiunto se Java standard avuto una classe e / o metodi aggiunto a controllare Corde per condizioni più comuni. Java 7 ha aggiunto la classe di oggetti per l'esecuzione di alcune funzionalità molto comune in oggettos, quindi una nuova classe chiamata stringhe o StringUtils potrebbe fare la stessa cosa per Java String s.

Nessun commento:

Posta un commento

Nota. Solo i membri di questo blog possono postare un commento.