2010-01-25 16 views
7

Ok, ecco alcuni punti facili. PyBinding è arrivato con questo script:La stringa è nulla o vuota

def IsNotNull(value): 
    return value is not None 

È vicino, ma quello che voglio è questo.

bool IsNotNullOrEmpty(string value) { 
    return (value != null) && (value.Length > 0); 
} 
+0

Bene, .NET include String.IsNullOrEmpty. Funzionerebbe? – ojrac

risposta

16

Per verificare se una stringa è vuota, utilizzare len. Prova questo:

def IsNotNull(value): 
    return value is not None and len(value) > 0 
+0

Di nuovo sbagliato. Ti sei anche preso la briga di provare questo codice? –

+0

Ecco fatto, ho rispedito alla mia risposta originale. Ho cancellato il mio post e poi l'ho sostituito con quello che credevo fosse una soluzione "Pythonic", che implica il 'non not''. –

+1

-1 Questo non è necessario in Python come None e '' False in Python: http://docs.python.org/library/stdtypes.html#truth-value-testing –

0

penso,

if IsNotNull(value) { 

equivale a

if not value: 

per le stringhe. quindi penso che la funzione non sia necessaria in python.

1
def IsNotNullString(s): 
    return bool(s) 

Rules of Python boolean conversion.

+0

Non ha funzionato. Le stringhe vuote tornano ancora come True. –

+0

@JonathanAllen Ho appena eseguito questo nell'interprete Python e ha funzionato per me. In quale versione di python hai ottenuto un True? Sto usando 2.7.3 – Saurav

5

Non dovrebbe fare questo in una funzione. Invece si dovrebbe semplicemente usare:

if someStringOrNone: 
+0

Non ha funzionato. Le stringhe vuote tornano ancora come True. –

+5

Questa è la versione Pythonic preferita e funziona perfettamente per le stringhe di Python. L'unica ragione per cui potrebbe non funzionare è se si passa qualche tipo .NET che non è compatibile con le stringhe Python per la funzione. –

+0

@ Jonathan Non penso che stiate passando una stringa vuota al test. Come ti ha mostrato Ignacio, funziona con le corde vuote. Puoi mostrarci il codice in cui la stringa vuota viene valutata come True? Penso che sarebbe un bug allora. –

3

Se si tratta di IronPython, allora perché non utilizzare l'implementazione predefinita di IsNullOrEmpty da System.String?

import clr 
clr.AddReference('System') 
import System 
System.String.IsNullOrEmpty('') # returns True 
System.String.IsNullOrEmpty(None) # returns True 
System.String.IsNullOrEmpty('something') # returns False 
Problemi correlati