2013-01-18 14 views
7

Come faccio a controllare se un elenco di caratteri si trova in una stringa, ad esempio "ABCDEFGH", come faccio a verificare se uno di questi è in una stringa.Come posso verificare se una stringa contiene un elenco di caratteri?

+0

Vuoi dire che si vuole verificare se qualche stringa contiene caratteri dalla lista? –

+0

Probabilmente dovresti guardarti un po 'altrove prima di fare domande come questa. – sage88

+0

Penso che OP significhi chiedere un'espressione regolare ma non so come chiedere a – Mawia

risposta

15

l'uso delle espressioni regolari in Java per verificare utilizzando str.matches(regex_here) regex in java

ad esempio:

if("asdhAkldffl".matches(".*[ABCDEFGH].*")) 
    { 
     System.out.println("yes"); 
    } 
+0

cosa dire della sensibilità della localizzazione? – mre

2

Penso che questa sia una domanda newbie, in modo che io ti darò il metodo easies mi viene in mente: using indexof versione complessa include regex puoi provare se vuoi.

0

Questo mi sembra una domanda Homework ... -_-

È possibile utilizzare la funzione dei String.contains().
Per esempio:

"string".contains("a"); 
String str = "wasd"; 
str.contains("a"); 

ma avrete bisogno di chiamare una volta per ogni carattere che si desidera verificare.

+0

Questa è una soluzione inefficiente, usare regex è meglio. –

+0

L'ho postato perché è più semplice e facile da capire se non si conosce ancora un'espressione regolare. – EAKAE

+0

Sì, ma buona fortuna se si desidera verificare se contiene solo dati numerici con questo metodo. – Alex

8

Il modo più pulito per implementare questa sta usando StringUtils.containsAny(String, String)

package com.sandbox; 

import org.apache.commons.lang.StringUtils; 
import org.junit.Test; 

import static org.junit.Assert.assertFalse; 
import static org.junit.Assert.assertTrue; 

public class SandboxTest { 

    @Test 
    public void testQuestionInput() { 
     assertTrue(StringUtils.containsAny("39823839A983923", "ABCDEFGH")); 
     assertTrue(StringUtils.containsAny("A", "ABCDEFGH")); 
     assertTrue(StringUtils.containsAny("ABCDEFGH", "ABCDEFGH")); 
     assertTrue(StringUtils.containsAny("AB", "ABCDEFGH")); 
     assertFalse(StringUtils.containsAny("39823839983923", "ABCDEFGH")); 
     assertFalse(StringUtils.containsAny("", "ABCDEFGH")); 
    } 

} 

Maven dipendenza:

<dependency> 
     <groupId>org.apache.commons</groupId> 
     <artifactId>commons-lang3</artifactId> 
     <version>3.5</version> 
    </dependency> 
+0

Ricevo L'importazione org.apache.commons non può essere risolta – anon58192932

+2

@advocate Probabilmente perché non è incorporato in java. Devi scaricare Apache Commons Lang per averlo. http://commons.apache.org/proper/commons-lang/ Assicurati di aggiungerlo al tuo classpath. –

+0

Grazie! Per chiunque altro è necessario decomprimere il pacchetto di download (mi raccomando nella cartella del progetto). Fai clic con il pulsante destro del mouse sul progetto in Eclipse -> Percorso di creazione -> Configura percorso di creazione -> Aggiungi giare esterne -> Seleziona i gusci di lingua comune. Avrai anche bisogno del numero di versione corretto nella tua dichiarazione di inport: import org.apache.commons.lang3.StringUtils; – anon58192932

1

Da Guava: CharMatcher.matchesAnyOf

private static final CharMatcher CHARACTERS = CharMatcher.anyOf("ABCDEFGH"); 
assertTrue(CHARACTERS.matchesAnyOf("39823839A983923")); 
Problemi correlati