Tengo una cadena "MySites"
. Quiero colocar un espacio entre My
y Sites
.Insertar espacio antes de mayúsculas
¿Cómo puedo hacer esto en jQuery o JavaScript?
Tengo una cadena "MySites"
. Quiero colocar un espacio entre My
y Sites
.Insertar espacio antes de mayúsculas
¿Cómo puedo hacer esto en jQuery o JavaScript?
Usted puede añadir un espacio antes de cada carácter en mayúscula y recortar los espacios iniciales y finales
s = s.replace(/([A-Z])/g, ' $1').trim()
Esto también funciona para "1AndAbove". La otra solución no. ¡¡Gracias!! –
"falla" para acrónimos, ¿cómo podríamos evitar que actúe cuando 2 o más tapas consecutivas? –
@ToniMichelCaubet fácil, modifique la expresión regular de la siguiente manera: '/ ([A-Z] +)/g'. El + se asegurará de que coincidan tantas mayúsculas consecutivas como sea posible. – iFreilicht
Esto debe insertar un espacio entre cada letra mayúscula que no fue precedida por una letra mayúscula.
var myString = "MySites"
var newString = "";
var wasUpper = false;
for (var i = 0; i < myString.length; i++)
{
if (!wasUpper && myString[i] == myString.toUpperCase()[i])
{
newString = newString + " ";
wasUpper = true;
}
else
{
wasUpper = false;
}
newString = newString + myString[i];
}
newString
tendrá el valor que desee. Además, si desea acortar el código utilizando expresiones regulares, puede utilizar el siguiente código de Javascript camelCase to Regular Form
"thisStringIsGood"
// insert a space before all caps
.replace(/([A-Z])/g, ' $1')
// uppercase the first character
.replace(/^./, function(str){ return str.toUpperCase(); })
Este encontrarán cada ocurrencia de un carácter en minúscula seguida de un carácter en mayúsculas, e insertar un espacio entre ellas :
s = s.replace(/([a-z])([A-Z])/g, '$1 $2');
Para casos especiales cuando 2 letras mayúsculas consecutivas ocurren (Ej: ThisIsATest) añadir código adicional a continuación:
s = s.replace(/([A-Z])([A-Z])/g, '$1 $2');
Solo una advertencia, esto falla para letras simples "ThisIsATest" resultará "This Is ATest". – Ceres
@Ceres: Buen punto. Ese caso podría manejarse insertando un espacio antes de cualquier capital que no sea el primer carácter, pero aún tiene casos que no se pueden manejar sin reconocimiento de palabras, como '" RunThisSQLQuery "'. – Guffa
para "ThisIsATest" - (sin contar el 'RunThisSQLQuery') puede hacer esto: str.replace (/ ([A-Z])/g, '$ 1'). Trim() – carinlynchin
expresión regular para encontrar minúsculas - caso límite superior y luego insertar un espacio
<div id='x'>ThisIsMySites</div>
$('#x').text($('#x').text().replace(/([a-z])([A-Z])/g, "$1 $2"));
Puedo sugerir una ligera modificación a la respuesta actualmente aceptada:
function insertSpaces(string) {
string = string.replace(/([a-z])([A-Z])/g, '$1 $2');
string = string.replace(/([A-Z])([A-Z][a-z])/g, '$1 $2')
return string;
}
Esto significa que:
ACROText -> ACRO Text
UserNameTest -> User Name Test
Lo que podría ser un poco más útil si se trata de nombres de columna db (Y está utilizando acrónimos para algunas cosas)
Esto funciona perfectamente para lo que estaba necesitando. Se agregó perfectamente un espacio entre letras mayúsculas, pero mantuvo acrónimos juntos. –
¿Puede dar un poco más de detalle? ¿Cuál es la forma general de las cadenas que desea separar? Si solo se trata de una cadena, ¿por qué no pone el espacio manualmente? – Pointy
Sea más preciso, no creo que nadie pueda entender lo que está preguntando –
defina el patrón que debe coincidir, p. Ej. "un espacio cuando encuentre 'Mi' en la cadena" o "agregue un espacio antes de cada carácter capital, a menos que sea el primer carácter", o .... – JohnSmith