2013-05-12 13 views
6

Un client ha aggiornato i propri sistemi e ha iniziato a segnalare errori nell'output. Apparentemente, una divisione di stringhe prima ha avuto come risultato il seguente.Comportamento modificato in RegEx.Split dopo l'aggiornamento del framework .NET

"a-b-c" -> {"a", "b", "c"} 

Ora, tuttavia, ottengono questo.

"a-b-c" -> {"a", "-", "b", "-", "c"} 

Ho controllato intellisense ma per quanto posso dire, non c'è alcuna opzione per accendere/spegnere l'inserimento di separatori. Come si può affrontarlo facilmente?

Il miglior suggerimento che ho in testa è quello di dividere usando espressioni regolari e quindi dove utilizza il collegamento con la condizione corrispondente di regex. Sembra ridondante, anche se ...

La versione corrente è 4.5. Prima, avevano qualcosa ooold, come 2.0 o qualcosa del genere.

+0

Puoi mostrare il codice? –

+0

Regex.Split ("a-b-c", "-"); –

+0

Molto strano. Questo risultato sarebbe previsto per 'Regex.Split (" a-b-c "," (-) ");', ma non per quello che hai postato. –

risposta

3

Il comportamento di .NET 4.5 è corretto.

Il contenuto dei gruppi di acquisizione viene aggiunto al risultato di divisione. Pertanto, Regex.Split("a-b-c", "(-)"); aggiungerà i trattini all'array.

Utilizzare invece Regex.Split("a-b-c", "-");.

+0

Oh, è corretto, il comportamento, va bene. È solo diverso da prima. Ho appena trovato [questo link] (http://msdn.microsoft.com/en-us/library/8yttk7sy.aspx) (vedi nel mezzo quando discutono le date). A quanto pare, il mio cliente ha eseguito ** ooooooooold ** versione di .NET prima. –

Problemi correlati