2012-05-22 12 views
6

Esiste una funzione in javascript che confronta una stringa e restituisce un valore booleano? Ho trovato .match ma restituisce le stringhe corrispondenti. Speravo ci fosse qualcos'altro in modo che avrei avuto un codice minore nel confrontare una stringa. Dal momento che volevo controllare se una stringa ha questa parola e procedere altrimenti.stringa confronta in javascript che restituisce un valore booleano

grazie

+0

stai cercando uno string1 esatto String2 partita, o è qualcosa stringa1 che può avvenire da qualche parte all'interno di un più grande stringa2? –

+0

questa è stata la mia prima soluzione, ma ho riscontrato un difetto.Email == L'email dell'amico restituirà false. quindi stavo cercando una funzione simile a strcmp per javascript. :) – magicianiam

risposta

11

Si può usare il tipo aumento, soprattutto se avete bisogno di utilizzare questa funzione spesso:

String.prototype.isMatch = function(s){ 
    return this.match(s)!==null 
} 

Quindi puoi usare:

var myBool = "ali".isMatch("Ali"); 

vista generale è che l'uso di tipo aumento è scoraggiato solo per il fatto che può collidere con altri potenziamenti.

In base al libretto Javascript Patterns, il suo utilizzo deve essere limitato.

io personalmente penso che sia OK, fino a quando si utilizza un buon denominazione come ad esempio:

String.prototype.mycompany_isMatch = function(s){ 
    return this.match(s)!==null 
} 

In questo modo sarà brutta ma sicura.

+0

Ottimo! (un po 'eccessivo forse?: D) – ArtoAle

+0

non ho visto quelle cose prima. che cos'è ismatch? fammi provare questo grazie – magicianiam

+0

@magicianIam funzionerà se lo aggiungi al prototipo di stringa - come ho delineato. 'isMatch' è la nostra aggiunta al framework JavaScript, non una funzione intrinseca – Aliostad

5

c'è .indexOf() che restituirà la posizione della stringa trovata, oppure -1 se non trovato

+0

ho sempre pensato che fosse solo per array. – magicianiam

+0

no, funziona anche su stringhe! Ma sono un po 'incerto se stai cercando una sottostringa all'interno di una stringa, o un confronto stringa esatto (maiuscole/minuscole?). –

+0

case sensitive, ma sto pianificando di usare tolowercase per facilitare i miei problemi. fammi provare questo Grazie. mi chiedo perché Google non mi abbia mostrato questo. – magicianiam

0

Si può semplicemente utilizzare un confronto.

if ("dog" == "cat") { 
    DoSomethingIfItIsTrue(); 
} else { 
    DoSomethingIfItIsFalse(); 
} 
+0

In senso stretto, se si segue questo approccio, si desidera utilizzare '===', non '=='. Ho il sospetto che la maggior parte dei codificatori di Javascript userebbe questo piuttosto che aumentare il prototipo di String, quindi vale almeno l'abitudine di usare "===" per controllare l'uguaglianza. –

0

So che questa non è la risposta esatta che stai cercando, ma questo è sempre un modo efficace per fare questo.

if(var1 == var2){ 
    //do this 
}else{ 
    //do that 
}; 
+0

secondo un gran numero di articoli (e anche la mia opinione personale) il test '===' è molto più affidabile (e ha una transitabilità propria) di '==' (che non è transitivo). Inoltre, se ha bisogno di un booleano può semplicemente usare '(var1 === var2? True: false)' – ArtoAle

+0

Sì, ho capito che vuole restituire un booleano, ma cosa ci farà dopo, la mia ipotesi sarebbe di fai qualcosa se è vero e qualcos'altro se è falso. Ma sì, hai ragione con il ===. –

1
myString.indexOf(myWord) > -1 

o, se si desidera una funzione:

function hasWord(myString, myWord) { 
    return myString.indexOf(myWord) > -1; 
} 
9

È possibile utilizzare il metodo di test() RegEx che restituisce un valore booleano:

/a/.test('abcd'); // returns true. 
+1

Questa è la risposta corretta. "Il metodo' test() 'esegue una ricerca di una corrispondenza tra un'espressione regolare e una stringa specificata. Restituisce' true' o 'false'." - https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/test –

0

In realtà, .match() può fare il trucco per voi, perché restituisce un array di stringhe di pattern corrispondenti eventuali, null altrimenti.

In ogni caso, se si desidera controllare se una stringa contiene un'altra stringa è più probabile che si usi indexOf() (restituirà -1 se non viene trovata alcuna sottostringa).

La prima soluzione è un po 'eccessivo per il vostro scopo.

Se sull'altra estremità si desidera controllare per l'uguaglianza si può usare `string1 === string2``

Problemi correlati