solo regulares regular regexp probar primera poner palabra minusculas mayusculas mayuscula letra expresiones expresion especiales espacio caracteres cada blanco alfanumerico regex letter capitalize

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