Regex: konvertieren camel-case zu Großbuchstaben mit Unterstrichen

Welchen regulären Ausdruck kann benutzt werden, um die folgenden Konvertierungen?

City -> CITY
FirstName -> FIRST_NAME
DOB -> DOB
PATId -> PAT_ID
RoomNO -> ROOM_NO

Den folgenden fast funktioniert, es fügt nur einen zusätzlichen Unterstrich an den Anfang des Wortes:

var rgx = @"(?x)( [A-Z][a-z,0-9]+ | [A-Z]+(?![a-z]) )";

var tests = new string[] { "City",
                           "FirstName",
                           "DOB",
                           "PATId",
                           "RoomNO"};

foreach (var test in tests)
    Console.WriteLine("{0} -> {1}", test, 
                       Regex.Replace(test, rgx, "_$0").ToUpper());


//output:
//City -> _CITY
//FirstName -> _FIRST_NAME
//DOB -> _DOB
//PATId -> _PAT_ID
//RoomNO -> _ROOM_NO
  • Es scheint zu den führenden Unterstrich ist konsequent Hinzugefügt, also warum gehst du nicht einfach isolieren Sie diese aus?
  • Auf der Suche nach genau das Gegenteil: Regex: konvertieren caps mit Unterstrichen, um alle camel-case
InformationsquelleAutor MCS | 2010-12-22
Schreibe einen Kommentar