Voglio dividere le parole camelCase
o PascalCase
nello spazio separato di parole.Ignora gli spazi esistenti nella conversione di CamelCase alla stringa con spazi
Finora, ho:
Regex.Replace(value, @"(\B[A-Z]+?(?=[A-Z][^A-Z])|\B[A-Z]+?(?=[^A-Z]))", " $0", RegexOptions.Compiled);
Funziona bene per la conversione "TESTWORD" a "prova di parola" e per lasciare intatta singole parole, per esempio Testing
rimane Testing
.
Tuttavia, ABCTest
viene convertito in A B C Test
quando preferirei ABC Test
.
Grazie per la tua risposta ma non funziona quando il valore ha già uno spazio. Finisce per raddoppiare lo spazio, ad esempio "Test ABC" diventa "Test ABC" Ugualmente "ABCTest" diventa "Test ABC", cioè lo spazio principale viene mantenuto. –
@CiaranMartin Vorrei usare 'Regex.match()' per ottenere un 'MatchCollection' di tutte le partite elencate sopra. È quindi possibile eseguire il cast su un array e unirlo in una stringa utilizzando un singolo separatore di spazi. Ciò mantiene molta della logica fuori dalla tua regex e rende il codice più leggibile. – thodic
@CiaranMartin vedere la mia modifica per l'implementazione C#. – thodic