문자열에 문자가 몇 번 나타나는지 확인하는 간단한 방법이 있습니까?
답변
문자열에서 다른 문자를 제거하고 길이를 확인할 수 있습니다.
str.replace(/[^a]/g, "").length
여기에 a
s가 몇 개 있는지 계산됩니다 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);