2014-10-15 5 views
0

Я использую VBScript RegExVBScript Regular Expression Split PascalCase

Dim RegEx : RegEx = new RegExp 
Dim stringValue : stringValue = "StudentID" 
Dim NiceName 
    With RegEx 
     .Pattern = "([A-Z])(?![A-Z])" 
    .IgnoreCase = False 
    .Global  = True 
    End With 

    NiceName= RegEx.Replace(stringValue , " $1") 

NiceName должен быть "Student ID"

Я получаю "Studenti D"

Примечание: эта модель работает для строк которые не имеют двух прописных букв рядом друг с другом.

Я попытался следующие закономерности, но они порождают ошибки в VBScript:

"(?<!^)([A-Z][a-z]|(?<=[a-z])[A-Z])" 
"(?<=[A-Z])(?=[A-Z][a-z])|(?<=[^A-Z])(?=[A-Z])|(?<=[A-Za-z])(?=[^A-Za-z])" 

ответ

0

Не зная реальные предпосылки, может быть, это может работать. Просто заменить строчную букву с последующей прописной буквой с обеими буквами, разделенных пробелом

Option Explicit 

Dim stringValue 
    stringValue="the StudentID has a RareCaseOfUpperCASE" 

    With New RegExp 
     .Pattern = "([a-z])([A-Z])" 
     .IgnoreCase = False 
     .Global = True 
     WScript.Echo .Replace(stringValue, "$1 $2") 
    End With 

Выход: the Student ID has a Rare Case Of Upper CASE