¿Cómo puedo convertir una cadena como 'helloThere' o 'HelloThere' a 'Hello There' en JavaScript?
javascript
regex
string
HyderA
fuente
fuente
Respuestas:
escribe con mayúscula la primera letra, como ejemplo.
Tenga en cuenta el espacio en
" $1"
.EDITAR: se agregó un ejemplo de capitalización de la primera letra. Por supuesto, en caso de que la primera letra ya sea mayúscula, tendría un espacio libre para eliminar.
fuente
text.replace
, he estado rellenando llamadas de función con más de 2 argumentos con espacios paraNon-GoogleChrome
?Alternativamente usando lodash :
Ejemplo:
Lodash es una buena biblioteca para dar acceso directo a muchas tareas js cotidianas. Hay muchas otras funciones similares de manipulación de cadenas como
camelCase
,kebabCase
etc.fuente
hello world
, la salida debería serHello There
, en este caso, loadash no será útil.hello world
enHello World
lodash.com/docs/4.17.15#upperFirsthello there
ahello world
.Tuve un problema similar y lo solucioné así:
Para una solución más robusta:
http://jsfiddle.net/PeYYQ/
Entrada:
Salida:
fuente
Ejemplo sin efectos secundarios.
En ES6
fuente
La mejor cadena que he encontrado para probar las funciones de camello-caso-título-caso es este ejemplo ridículamente absurdo, que prueba muchos casos extremos. Que yo sepa, ninguna de las funciones publicadas anteriormente maneja esto correctamente :
ToGetYourGEDInTimeASongAboutThe26ABCsIsOfTheEssenceButAPersonalIDCardForUser456InRoom26AContainingABC26TimesIsNotAsEasyAs123ForC3POOrR2D2Or2R2D
Esto debe convertirse a:
Para obtener su GED a tiempo Una canción sobre los 26 ABC es esencial, pero una tarjeta de identificación personal para el usuario 456 en la habitación 26A que contiene ABC 26 veces no es tan fácil como 123 para C3PO o R2D2 o 2R2D
Si solo desea una función simple que maneje casos como el anterior (y más casos que muchas de las respuestas anteriores), aquí está la que escribí. Este código no es particularmente elegante o rápido, pero es simple, comprensible y funciona.
Un ejemplo ejecutable en línea está en jsfiddle , o puede ver el resultado del fragmento a continuación en su consola:
fuente
Basado en uno de los ejemplos anteriores, se me ocurrió esto:
Funciona para mí porque utiliza
.trim()
para manejar el caso de borde donde la primera letra está en mayúscula y terminas con un espacio inicial adicional.Referencia: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/Trim
fuente
Ok, llegué unos años tarde al juego, pero tenía una pregunta similar y quería hacer una solución de reemplazo único para cada entrada posible. Debo dar la mayor parte del crédito a @ZenMaster en este hilo y @Benjamin Udink ten Cate en este hilo. Aquí está el código:
Tiene tres cláusulas, todas con anticipación para evitar que el motor de expresiones regulares consuma demasiados caracteres:
[A-Z](?=[A-Z][a-z])
busca una letra mayúscula seguida de una letra mayúscula y luego minúscula. Esto es para acabar con acrónimos como Estados Unidos.[^A-Z](?=[A-Z])
busca una letra no mayúscula seguida de una letra mayúscula. Esto termina palabras como myWord y símbolos como 99Bottles.[a-zA-Z](?=[^a-zA-Z])
busca una letra seguida de una no letra. Esto termina palabras antes de símbolos como BFG9000.Esta pregunta estaba en la parte superior de mis resultados de búsqueda, ¡así que espero poder salvar a otros algún tiempo!
fuente
Aquí está mi versión de la misma. Agrega un espacio antes de cada letra en inglés de UpperCase que viene después de una letra minúscula en inglés y también escribe en mayúscula la primera letra si es necesario:
Por ejemplo:
thisIsCamelCase -> This Is Camel Case
this IsCamelCase -> This Is Camel Case
thisIsCamelCase123 -> This Is Camel Case123
fuente
Esta implementación toma en consideración letras mayúsculas y números consecutivos.
fuente
Puede usar una función como esta:
Código con un montón de cadenas de prueba aquí: http://jsfiddle.net/jfriend00/FWLuV/ .
Versión alternativa que mantiene los espacios principales aquí: http://jsfiddle.net/jfriend00/Uy2ac/ .
fuente
" helloWorld"
, por ejemplo.prueba esta biblioteca
http://sugarjs.com/api/String/titleize
fuente
Ninguna de las respuestas anteriores funcionó perfectamente para mí, por lo que tuve que venir con mi propia bicicleta:
Casos de prueba:
fuente
Esto funciona para mí, mira esto
fuente
string.replace(/([A-Z]+)/g, " $1").replace(/([A-Z][a-z])/g, "$1");
Creo que esto se puede hacer solo con el registro exp
/([a-z]|[A-Z]+)([A-Z])/g
y el reemplazo"$1 $2"
.ILoveTheUSADope -> I Love The USA Dope
fuente
QWERTY
devuelveQWERT Y
.Si se ocupa de Capital Camel Case, este fragmento puede ayudarlo, también contiene algunas especificaciones para que pueda estar seguro de que coincide con su caso.
Y especificaciones:
fuente
No probé la respuesta de todos, pero las pocas soluciones con las que jugué no cumplían con todos mis requisitos.
Pude llegar a algo que hizo ...
fuente
A continuación se muestra un enlace que muestra la cadena de casos de camello a la cadena de oración utilizando expresiones regulares.
Entrada
myCamelCaseSTRINGToSPLITDemo
Salida
my Camel Case STRING To SPLIT Demo
Esta es la expresión regular para la conversión del caso de camello a texto de oración
con
$1 $2
como substituto.Haga clic para ver la conversión en expresiones regulares
fuente
Entrada javaScript
Salida de Java Script
fuente
Una solución más basada en RegEx.
Explicación
El RegEx anterior consta de dos partes similares separadas por el operador OR . La primera mitad:
([A-Z])
- coincide con letras mayúsculas ...(?=[A-Z][a-z])
- seguido de una secuencia de letras mayúsculas y minúsculas.Cuando se aplica a la secuencia FOo , esto efectivamente coincide con su letra F.
O el segundo escenario:
([a-z])
- coincide con letras minúsculas ...(?=[A-Z])
- seguido de una letra mayúscula.Cuando se aplica a la secuencia barFoo , esto efectivamente coincide con su letra r .
Cuando se encuentran todos los candidatos de reemplazo, lo último que debe hacer es reemplazarlos con la misma letra pero con un carácter de espacio adicional. Para esto podemos usarlo
'$& '
como reemplazo, y se resolverá en una subcadena coincidente seguida de un carácter de espacio.Ejemplo
fuente
Agregué otra solución ES6 que me gustó más después de no estar contento con algunos de los pensamientos anteriores.
https://codepen.io/902Labs/pen/mxdxRv?editors=0010#0
fuente