regulares - Regex pone en mayúscula la primera letra de cada palabra, también después de un carácter especial como un guión
probar expresiones regulares (5)
Uso este #(/s|^)([a-z0-9-_]+)#i
para #(/s|^)([a-z0-9-_]+)#i
en mayúscula cada primera letra en cada palabra, quiero que también #(/s|^)([a-z0-9-_]+)#i
en mayúscula la letra si está después de una marca especial como un guión ( -)
Ahora se muestra:
This Is A Test For-stackoverflow
Y quiero esto:
This Is A Test For-Stackoverflow
¿Alguna sugerencia / muestra para mí?
No soy un profesional, así que trata de que sea simple para que lo entienda.
+1 para los límites de palabras, y aquí hay una solución de Javascript comparable. Esto explica los posesivos, también:
var re = /(/b[a-z](?!/s))/g;
var s = "fort collins, croton-on-hudson, harper''s ferry, coeur d''alene, o''fallon";
s = s.replace(re, function(x){return x.toUpperCase();});
console.log(s); // "Fort Collins, Croton-On-Hudson, Harper''s Ferry, Coeur D''Alene, O''Fallon"
En realidad, no es necesario que coincida con la cadena completa, solo debe coincidir con la primera letra no mayúscula como esta:
''~/b([a-z])~''
Intente #([/s-]|^)([a-z0-9-_]+)#i
- el (/s|^)
coincide con un carácter de espacio en blanco ( /s
) o el inicio de la línea ( ^
) . Cuando cambia la /s
a [/s-]
, coincide con cualquier carácter de espacio en blanco o un guión.
Una solución simple es usar límites de palabras :
#/b[a-z0-9-_]+#i
Alternativamente, puedes hacer coincidir para unos pocos personajes:
#([/s/-_]|^)([a-z0-9-_]+)#i
esto hará
REAC De Boeremeakers
desde
reaccion de boeremeakers
(?<=/A|[ .])(?<up>[a-z])(?=[a-z. ])
utilizando
Dim matches As MatchCollection = Regex.Matches(inputText, "(?<=/A|[ .])(?<up>[a-z])(?=[a-z. ])")
Dim outputText As New StringBuilder
If matches(0).Index > 0 Then outputText.Append(inputText.Substring(0, matches(0).Index))
index = matches(0).Index + matches(0).Length
For Each Match As Match In matches
Try
outputText.Append(UCase(Match.Value))
outputText.Append(inputText.Substring(Match.Index + 1, Match.NextMatch.Index - Match.Index - 1))
Catch ex As Exception
outputText.Append(inputText.Substring(Match.Index + 1, inputText.Length - Match.Index - 1))
End Try
Next