65 lines
2 KiB
Text
65 lines
2 KiB
Text
Function isDigit(ch As String) As Boolean
|
|
Return ch >= "0" And ch <= "9"
|
|
End Function
|
|
|
|
Function to_snake_case(s As String) As String
|
|
Dim As Integer l = Len(s)
|
|
Dim As String snake = Trim(s), tmp = snake
|
|
|
|
For i As Integer = 1 To Len(snake)
|
|
If isDigit(Mid(snake, i, 1)) Then
|
|
Continue For
|
|
Elseif Instr(Mid(snake, i, 1), " ") Then
|
|
Mid(snake, i) = "_"
|
|
Continue For
|
|
Elseif Instr(Mid(snake, i, 1), Any "\:/-_!.") Then
|
|
Continue For
|
|
Elseif Mid(snake, i, 1) = Ucase(Mid(snake, i, 1)) Then
|
|
tmp = Lcase(Mid(snake, i,1))
|
|
Mid(snake, i) = "_"
|
|
snake = Left(snake, i) & tmp & Mid(snake, i+1)
|
|
End If
|
|
Next i
|
|
Return snake
|
|
End Function
|
|
|
|
Function toCamelCase(s As String) As String
|
|
Dim As Integer l = Len(s)
|
|
Dim As String camel = Trim(s), tmp = camel
|
|
|
|
For i As Integer = 1 To Len(camel)
|
|
If Instr(Mid(camel, i, 1), Any ":/!.") Then
|
|
Continue For
|
|
Elseif Instr(Mid(camel, i, 1), Any " _-") Then
|
|
camel = Left(camel, i-1) & Ucase(Mid(camel, i+1,1)) & Mid(camel, i+2)
|
|
End If
|
|
Next i
|
|
Return camel
|
|
End Function
|
|
|
|
Dim Shared tests(1 To ...) As String*33 => {_
|
|
"snakeCase", "snake_case", "variable_10_case", "variable10Case", _
|
|
"\u025brgo rE tHis", "ergo rE tHis", "hurry-up-joe!", _
|
|
"c://my-docs/happy_Flag-Day/12.doc", " spaces "}
|
|
|
|
Sub test0(title As String, fn As String)
|
|
Print title
|
|
For i As Integer = 1 To Ubound(tests)
|
|
Dim As String texto = tests(i) & " ===> " & to_snake_case(tests(i))
|
|
Locate i+1, 41 - Len(texto) / 2 : Print texto
|
|
Next i
|
|
End Sub
|
|
|
|
Sub test1(title As String, fn As String)
|
|
Print title
|
|
For i As Integer = 1 To Ubound(tests)
|
|
Dim As String texto = tests(i) & " ===> " & toCamelCase(tests(i))
|
|
Locate i+12, 41 - Len(texto) / 2 : Print texto
|
|
Next i
|
|
End Sub
|
|
|
|
test0 "to_snake_case:", "to_snake_case"
|
|
Print
|
|
test1 "toCamelCase:", "toCamelCase"
|
|
|
|
Sleep
|