it-swarm.com.de

Lodash title case (Großbuchstabe des ersten Buchstabens jedes Wortes)

Ich sehe mir die lodash-Dokumente und andere Fragen zum Stapelüberlauf an - während es verschiedene native JavaScript-Möglichkeiten gibt, um diese Aufgabe zu erfüllen kann ich eine Zeichenfolge mit pur in Groß-/Kleinschreibung umwandeln? lodash-Funktionen (oder zumindest vorhandene prototypische Funktionen), damit ich keinen regulären Ausdruck verwenden oder eine neue Funktion definieren muss?

z.B.

This string ShouLD be ALL in title CASe

soll werden

This String Should Be All In Title Case
43
brandonscript

Dies kann mit einer kleinen Änderung von startCase geschehen:

_.startCase(_.toLower(str));
console.log(_.startCase(_.toLower("This string ShouLD be ALL in title CASe")));
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.13.1/lodash.min.js"></script>
146
4castle
_.startCase(_.camelCase(str))

Bei nicht vom Benutzer generiertem Text werden mehr Fälle als die akzeptierte Antwort behandelt

> startCase(camelCase('myString'))
'My String'
> startCase(camelCase('my_string'))
'My String'
> startCase(camelCase('MY_STRING'))
'My String'
> startCase(camelCase('my string'))
'My String'
> startCase(camelCase('My string'))
'My String'
24
aristidesfl

mit lodash version 4.

_.upperFirst(_.toLower(str))

16
James Nguyen
'This string ShouLD be ALL in title CASe'
  .split(' ')
  .map(_.capitalize)
  .join(' ');
12
CD..

Es gibt gemischte Antworten auf diese Frage. Einige empfehlen die Verwendung von _.upperFirst, Während andere _.startCase Empfehlen.

Kennen Sie den Unterschied zwischen ihnen.

i) _.upperFirst transformiert den ersten Buchstaben Ihrer Zeichenkette. Die Zeichenkette kann aus einem einzelnen Wort oder mehreren Wörtern bestehen, der einzige erste Buchstabe Ihrer Zeichenkette wird jedoch in Großbuchstaben umgewandelt.

_.upperFirst('jon doe')

ausgabe:

Jon doe

überprüfen Sie die Dokumentation https://lodash.com/docs/4.17.10#upperFirst

ii) _.startCase transformiert den ersten Buchstaben jedes Wortes in Ihrer Zeichenkette.

_.startCase('jon doe')

ausgabe:

Jon Doe

https://lodash.com/docs/4.17.10#startCase

4
Vishal Shetty

Hier ist ein Weg mit NUR lodash-Methoden und keine eingebauten Methoden:

_.reduce(_.map(_.split("Hello everyOne IN the WOrld", " "), _.capitalize), (a, b) => a + " " + b)
3
Brandon

Hier ist eine andere Lösung für meinen Anwendungsfall: "Teufels Rückgrat"

Einfach:

function titleCase (str) {
  return _.map(str.split(' '), _.upperFirst).join(' ');
}

Die Verwendung von startCase würde den Apostroph entfernen, so dass ich diese Einschränkung umgehen musste. Die anderen Lösungen schienen ziemlich kompliziert. Ich mag das, weil es sauber und leicht verständlich ist.

0
albertpeiro

Der folgende Code funktioniert einwandfrei:

var str = "TITLECASE"; _. startCase (str.toLowerCase ());

0
Tarun Majumder
 var s = 'This string ShouLD be ALL in title CASe';
 _.map(s.split(' '), (w) => _.capitalize(w.toLowerCase())).join(' ')

Wenn ich es nicht vermisst habe, hat lodash keine eigenen Methoden für die Groß-/Kleinschreibung.

0
agmcleod
const titleCase = str =>
  str
    .split(' ')
    .map(str => {
      const Word = str.toLowerCase()
      return Word.charAt(0).toUpperCase() + Word.slice(1)
    })
    .join(' ')

Sie können die Kartenfunktion auch aufteilen, um einzelne Wörter zu erstellen

0
Luke Robertson

Nicht so knapp wie die Antwort von @ 4castle, aber beschreibend und nichtssagend, aber trotzdem ...

var basicTitleCase = _
    .chain('This string ShouLD be ALL in title CASe')
    .toLower()
    .words()
    .map(_.capitalize)
    .join(' ')
    .value()

console.log('Result:', basicTitleCase)
console.log('Exact Match:' , basicTitleCase === 'This String Should Be All In Title Case')
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.13.1/lodash.min.js"></script>

0