2013-02-15 12 views
5
Dim rc As Boolean = "2" Like "*?<*?" 

Non capisco il motivo per cui RC è uguale a vero, sicuramente non è come 2*?<*? a tutti.VB.NET Come operatore di confusione con segno minore nel modello

Il modello di cui sopra richiede una stringa con

  • Almeno tre caratteri (due s '? E un <)
  • dove il simbolo < è da qualche parte sul lato interno.

Per quanto posso capire < non è un carattere speciale che significa qualcosa di diverso < per l'operatore Like.

Utilizzando Visual Studio 2010.

+0

Non so perché "2" corrisponde a "<". Tuttavia, non richiede tre caratteri prima poiché '*' è un carattere jolly per qualsiasi cosa (quindi anche zero caratteri). –

+0

So * corrisponde a qualsiasi cosa, quindi "2" passa sia il * che il? caratteri jolly, ma il <è ancora mancante dalla partita come è il secondo? –

+1

Stranamente se rimuovi anche solo uno dei due caratteri jolly finali il risultato è falso. – Steve

risposta

1

Mentre non posso spiegare direttamente perché 2 è come "*?<*?".

La query viene letta;

  • * - Partita 0 o più caratteri
  • ? - Seguito da un singolo carattere
  • < - Seguito dal < carattere
  • * - Seguito da 0 o più caratteri
  • ? - Terminato di un solo carattere

Per la tua logica che vuoi;

almeno tre caratteri prima di partite, con "<" che si verificano da qualche parte sul all'interno della stringa di

che si traduce in una query di;

Dim rc As Boolean = "2" Like "???*<*" 

Quale legge;

  • ??? - corrispondere almeno 3 caratteri
  • * - Seguito da un numero qualsiasi di ulteriori caratteri
  • < - Seguito dal < carattere
  • * - Seguito da un numero qualsiasi di ulteriori caratteri

Non una risposta diretta Lo so, ma spero che aiuti lo stesso ...

EDIT:

Per rispondere a tuo commento qui sotto.

Ti piacerebbe;

trovare una stringa che ha un "<" in esso da qualche parte con almeno un carattere su entrambi i lati

che si traduce in una query di;

Dim rc As Boolean = "2" Like "*?<?*" 

Ciò restituirebbe False come risultato;

Dim rc As Boolean = "<" Like "*?<?*" 

Tuttavia;

Dim rc As Boolean = "2<2" Like "*?<?*" 

Restituisce vero.

Spero che questo aiuti (di più!)

+0

Quello che devo fare è trovare una stringa che abbia un "<" in esso da qualche parte con almeno un carattere su entrambi i lati. Posso scriverlo abbastanza facilmente usando String.IndexOf e roba del genere, ma pensavo che l'operatore Like sarebbe stato una facile via d'uscita. Avrò anche bisogno di una corrispondenza per una stringa con almeno due

+0

Per favore vedi la mia modifica! :-D – PGallagher

+0

Whoa, che funziona. WHYYYYY !? Qual è la differenza logica tra '? *' E '*?' –