[javascript] JavaScript : 문자열에서 문자가 몇 번 발생합니까?

문자열에 문자가 몇 번 나타나는지 확인하는 간단한 방법이 있습니까?



답변

문자열에서 다른 문자를 제거하고 길이를 확인할 수 있습니다.

str.replace(/[^a]/g, "").length

여기에 as가 몇 개 있는지 계산됩니다 str.


답변

이것은 a 아래 예에서 중요 합니다.

str = "A man is as good as his word";
alert(str.split('a').length-1);

대소 문자를 구분하지 않으려면 다음과 같은 것을 원할 것입니다.

alert(str.split( new RegExp( "a", "gi" ) ).length-1);

그래서 “A”와 “a”를 잡습니다. “g”플래그는 실제로 필요하지 않지만 “i”플래그는 필요합니다.


답변

RegEx를 사용하여 문자열의 “a”수를 계산합니다.

var string = 'aajlkjjskdjfAlsj;gkejflksajfjskda';

document.write(string.match(/a/gi).length);

이것이 어떻게 작동하는지 설명하겠습니다.

string.match이것은 RegEx 방법입니다. 지정된 문자열 (이 경우 문자열 “문자열”) 내에서 지정된 RegEx를 검색합니다.

(/a/gi)이것은 실제 RegEx입니다. “문자 a를 찾으십시오.”라고 읽습니다. 아주 간단합니다. 또한 “g”와 “i”라는 두 개의 플래그를 전달합니다. “g”는 문자 “a”의 모든 항목을 찾습니다. 그렇지 않으면 첫 번째 항목 만 찾고 숫자 1을 넘지 않습니다. 두 번째 플래그는 “i”입니다. RegEx가 해당 문자의 모든 경우와 일치하도록 만듭니다. 해당 플래그 (i)가 없으면 위의 코드는 문자열에서 대문자 “A”를 건너 뛰기 때문에 4 만 계산됩니다. “i”때문에 대문자 소문자 가 일치 합니다. 대소 문자를 일치 시키려면 “i”를 제거하십시오.

string.match모든 일치 항목의 배열을 반환하므로이 length메서드를 사용하여 배열 항목 수를 검색합니다. 그렇게 간단합니다!


답변

제 생각에는이 경우 정규식을 피하는 것이 더 편리하고 안전하다고 생각합니다.

모든 종류의 문자를 셀 수 있으려면 두 가지 표현을 고려해야하기 때문입니다. 하나는 공통 문자 용이고 다른 하나는 , 등의 특수 문자 용 입니다. 잊어 버리기 쉽지만 우리가 그것을 기억하더라도 불필요하게 코드를 확장하고 있다고 생각합니다.[]^

에서 이 경우 문자열 str및 문자 ch이러한 솔루션의 각 작동 :

let count = str.split(ch).length - 1

( @Sarfraz 에게 감사드립니다 )

또는

let count = str.split('').filter(x => x == ch).length

또는

let count = 0
str.split('').forEach(x => x == ch ? count++ : null)

즐겨!


답변

var s = "dqsskjhfds";
alert(s.length - s.replace(/a/g, "").length); // number of 'a' in the string


답변

var a = "acvbasbb";
var b= {};
for (let i=0;i<a.length;i++){
    if((a.match(new RegExp(a[i], "g"))).length > 1){
        b[a[i]]=(a.match(new RegExp(a[i], "g"))).length;
    }
}
console.log(b);


답변