794 Stimmen

Zählt die Anzahl der Vorkommen eines Zeichens in einer Zeichenkette in Javascript

Ich muss die Anzahl der Vorkommen eines Zeichens in einer Zeichenkette zählen.

Nehmen wir zum Beispiel an, meine Zeichenkette enthält:

var mainStr = "str1,str2,str3,str4";

Ich möchte die Anzahl der Kommas ermitteln , Zeichen, also 3, und die Anzahl der einzelnen Zeichenfolgen nach der Trennung durch Komma, also 4.

Außerdem muss ich überprüfen, dass jede der Zeichenketten, d. h. str1 oder str2 oder str3 oder str4, nicht mehr als, sagen wir, 15 Zeichen umfassen sollte.

0voto

Pratibha Singh Punkte 1

Die Funktion nimmt die Zeichenkette str als Parameter und zählt das Vorkommen jedes einzelnen Zeichens in der Zeichenkette. Das Ergebnis ist ein Schlüssel-Werte-Paar für jedes Zeichen.

var charFoundMap = {};//object defined
    for (var i = 0; i < str.length; i++) {

       if(!charFoundMap[ str[i] ])  {
        charFoundMap[ str[i] ]=1;
       } 
       else
       charFoundMap[ str[i] ] +=1;
       //if object does not contain this 
    }
    return charFoundMap;

}

0voto

Viscount Wathika Punkte 393

Ich weiß, dies könnte eine alte Frage sein, aber ich habe eine einfache Lösung für Anfänger in JavaScript.

Als Anfänger konnte ich nur einige der Lösungen zu dieser Frage verstehen, also habe ich zwei verschachtelte FÜR Schleifen, um jedes Zeichen mit jedem anderen Zeichen in der Zeichenkette zu vergleichen, wobei ein Wert inkrementiert wird zählen Variable für jedes gefundene Zeichen, das diesem Zeichen entspricht.

Ich habe ein neues leeres Objekt erstellt, bei dem jeder Eigenschaftsschlüssel ein Zeichen ist und der Wert angibt, wie oft jedes Zeichen in der Zeichenfolge vorkommt (count).

Beispielfunktion:-

function countAllCharacters(str) {
  var obj = {};
  if(str.length!==0){
    for(i=0;i<str.length;i++){
      var count = 0;
      for(j=0;j<str.length;j++){
        if(str[i] === str[j]){
          count++;
        }
      }
      if(!obj.hasOwnProperty(str[i])){
        obj[str[i]] = count;
      }
    }
  }
  return obj;
}

0voto

Pradeepta Punkte 158
let str = "aabgrhaab"
let charMap = {}

for(let char of text) {
   if(charMap.hasOwnProperty(char)){
      charMap[char]++
   } else {
     charMap[char] = 1
   }
}

console.log(charMap); //{a: 4, b: 2, g: 1, r: 1, h: 1}

0voto

saltimbokka Punkte 1

Die fünfte Methode in Leo Sauers Antwort schlägt fehl, wenn das Zeichen am Anfang der Zeichenkette steht. z.B..

var needle ='A',
  haystack = 'AbcAbcAbc';

haystack.split('').map( function(e,i){ if(e === needle) return i;} )
  .filter(Boolean).length;

ergibt 2 anstelle von 3, weil die Filterfunktion Boolean false für 0 ergibt.

Andere mögliche Filterfunktion:

haystack.split('').map(function (e, i) {
  if (e === needle) return i;
}).filter(function (item) {
  return !isNaN(item);
}).length;

eine weitere Antwort:

function count(string){
  const count={}

  string.split('').forEach(char=>{
    count[char] = count[char] ? (count[char]+1) : 1;
  })

  return count
}

console.log(count("abfsdfsddsfdfdsfdsfdsfda"))

0voto

AmerllicA Punkte 22941

Es gibt einen sehr kniffligen Weg, aber der ist umgekehrt:

const sampleStringText = "/john/dashboard/language";

Nehmen wir das obige Beispiel an, so können Sie die Anzahl der Vorwärtsslashs wie folgt zählen:

console.log( sampleStringText.split('/') - 1 );

Also Ich habe empfohlen, eine Funktion dafür zu verwenden (TypeScript):

const counter = (sentence: string, char: string): number => sentence.split(char) - 1;

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X