Rufen Sie den Anfangsbuchstaben jedes Wortes in einer Zeichenfolge in JavaScript ab

Lesezeit: 3 Minuten

Benutzer-Avatar
Gerben Jacobs

Wie würden Sie vorgehen, um den ersten Buchstaben jedes Wortes in einer Zeichenfolge zu sammeln, wie um eine Abkürzung zu erhalten?

Eingang: "Java Script Object Notation"

Ausgabe: "JSON"

Benutzer-Avatar
BotNet

Ich denke, was Sie suchen, ist das Akronym einer angegebenen Zeichenfolge.

var str = "Java Script Object Notation";
var matches = str.match(/\b(\w)/g); // ['J','S','O','N']
var acronym = matches.join(''); // JSON

console.log(acronym)

Notiz: dies schlägt bei Wörtern mit Bindestrich/Apostroph fehl Help-me I'm Dieing wird sein HmImD. Wenn Sie das nicht möchten, können Sie die Split auf Leerzeichen, nimm den ersten Buchstaben Ansatz könnte das sein, was Sie wollen.

Hier ist ein kurzes Beispiel dafür:

let str = "Java Script Object Notation";
let acronym = str.split(/\s/).reduce((response,word)=> response+=word.slice(0,1),'')

console.log(acronym);

  • @Armando: SO ist irgendwie komisch, wenn zwei Antworten schnell hintereinander gepostet werden.

    – Umarmung

    26. November 2011 um 16:51 Uhr


  • @StephanHoyer Richtig. Ich nehme an, Umlaute, Bindestriche, Apostrophe usw. – Zeichen, die wir als Teil eines Wortes und nicht als Wortgrenze betrachten.

    – BotNet

    14. Dezember 2016 um 3:40 Uhr

  • Dieser Code wandelt “Jean-Sébastien” (beachten Sie den Akzent) in “JSB” um. Wie bekomme ich “JS”?

    – PierreB

    15. Februar 2021 um 21:33 Uhr

  • seine Arbeit, aber warum “response+=word.slice(0,1)”? kann Bedarf “response + word.slice(0,1)” sein?

    – Romanown

    26. Oktober 2021 um 6:45 Uhr

Benutzer-Avatar
Umarmung

Ich denke damit kannst du das machen

'Aa Bb'.match(/\b\w/g).join('')

Erläuterung: Erhalten Sie alle /g die alphanumerischen Zeichen \w die nach einem nicht-alphanumerischen Zeichen stehen (also: nach einer Wortgrenze \b), legen Sie sie auf ein Array mit .match() und füge alles zu einer einzigen Kette zusammen .join('')


Je nachdem, was Sie tun möchten, können Sie auch einfach alle Großbuchstaben auswählen:

'JavaScript Object Notation'.match(/[A-Z]/g).join('')

  • Ich denke, eine Regex ist für diese Situation übertrieben.

    – JesseBuesking

    26. November 2011 um 16:40 Uhr

  • @JesseB: Ich weiß nicht, die alternative Lösung mit Split ist ziemlich ausführlich und muss sich um mehrere Leerzeichen in Folge und andere Trennzeichen wie Punkte oder Kommas kümmern.

    – Umarmung

    26. November 2011 um 16:46 Uhr

  • @JesseB Nicht wirklich. Kommt darauf an, was man unter “Wort” versteht

    – Aurelio DeRosa

    26. November 2011 um 16:46 Uhr

  • @missingno Ich bevorzuge Ausführlichkeit, wenn sie leichter zu verstehen und zu pflegen ist; p Manche Leute verstehen Regexes einfach nicht, also kann es, obwohl es knapper ist, zu Verwirrung und Missbrauch führen. Bei der Handhabung anderer Trennzeichen stimme ich Ihnen jedoch zu.

    – JesseBuesking

    26. November 2011 um 16:52 Uhr

Einfachster Weg ohne Regex

var abbr = "Java Script Object Notation".split(' ').map(function(item){return item[0]}).join('');

Benutzer-Avatar
Aaron Taddiken

Das geht ganz einfach mit ES6

string.split(' ').map(i => i.charAt(0))               //Inherit case of each letter
string.split(' ').map(i => i.charAt(0)).toUpperCase() //Uppercase each letter
string.split(' ').map(i => i.charAt(0)).toLowerCase() //lowercase each letter

Dies funktioniert NUR mit Leerzeichen oder was auch immer in der definiert ist .split(' ') Methode

dh, .split(', ') .split('; ')etc.

string.split(' ') .map(i => i.charAt(0)) .toString() .toUpperCase().split(',')

Um die großartigen Beispiele zu ergänzen, könnten Sie es in ES6 so machen

const x = "Java Script Object Notation".split(' ').map(x => x[0]).join('');
console.log(x);  // JSON

und das funktioniert auch, aber bitte ignoriere es, ich bin hier etwas verrückt geworden 🙂

const [j,s,o,n] = "Java Script Object Notation".split(' ').map(x => x[0]);
console.log(`${j}${s}${o}${n}`);

Benutzer-Avatar
tomersss2

@BotNet-Fehler: Ich glaube, ich habe es gelöst, nachdem ich 3 Tage mit Tutorials zu regulären Ausdrücken qualvoll war:

==> Ich bin ein Tier

(verwendet, um m von I’m zu fangen) wegen der Wortgrenze scheint es für mich so zu funktionieren.

/(\s|^)([a-z])/gi

Benutzer-Avatar
ipr101

Versuchen –

var text="";
var arr = "Java Script Object Notation".split(' ');
for(i=0;i<arr.length;i++) {
    text += arr[i].substr(0,1)
}    
alert(text);

Demo – http://jsfiddle.net/r2maQ/

1176320cookie-checkRufen Sie den Anfangsbuchstaben jedes Wortes in einer Zeichenfolge in JavaScript ab

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy