javascript - Infoga mellanslag före versaler
Jag har en sträng "MySites". Jag vill sätta ett mellanrum mellan My och Sites.
Hur kan jag göra detta i jQuery eller JavaScript?
Svar #1
Du kan bara lägga till ett mellanslag före varje versal och ta bort ledande och avslutande mellanslag
s = s.replace(/([A-Z])/g, ' $1').trim()
Svar #2
Detta kommer att hitta varje förekomst av en gemen tecken följt av en versal tecken, och infoga ett mellanslag mellan dem:
s = s.replace(/([a-z])([A-Z])/g, '$1 $2');
För speciella fall när 2 på varandra följande versaler förekommer (t.ex.: ThisIsATest) lägg till ytterligare kod nedan:
s = s.replace(/([A-Z])([A-Z])/g, '$1 $2');
Svar #3
Kan jag föreslå en liten ändring av det för närvarande accepterade svaret:
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;
}
Detta betyder att:
ACROText -> ACRO Text
UserNameTest -> User Name Test
Vilket kan vara något mer användbart om du har att göra med databas kolumnnamn (och använder förkortningar för vissa saker)
Svar #4
Här är vad jag slutade använda för att konvertera en sträng till versalisering av titlar, baserat på några av svaren här:
str = str
.replace(/(_|-)/g, ' ')
.trim()
.replace(/\w\S*/g, function(str) {
return str.charAt(0).toUpperCase() + str.substr(1)
})
.replace(/([a-z])([A-Z])/g, '$1 $2')
.replace(/([A-Z])([A-Z][a-z])/g, '$1 $2')
Här är en JSFiddle där du kan testa din sträng för att se om detta uppfyller dina behov: https://jsfiddle.net/thomastasa/5236dv8t/85/
Exempel:
- "yourStringHere" -> "Din Sträng Här"
- "AnotherStringHere" -> "Another String Here"
- "someones_string" -> "Someones String"
- "Another-String-Here" -> "Another String Here"
- "myAWESOMEString" -> "Min FANTASTISKA Sträng"
