มีวิธีง่ายๆในการตรวจสอบว่าอักขระปรากฏใน String กี่ครั้ง?
มีวิธีง่ายๆในการตรวจสอบว่าอักขระปรากฏใน String กี่ครั้ง?
คำตอบ:
คุณสามารถลบอักขระอื่น ๆ ในสตริงและตรวจสอบความยาว:
str.replace(/[^a]/g, "").length
นี่มันจะถูกนับว่าหลายa
s str
อยู่ใน
let xLength = str.replace(/[^a || A]/g, "").length;
let xLength = str.replace(/[^aA]/g, "").length;
สิ่งนี้นับ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 ที่ระบุภายในสตริงที่ระบุ (ในกรณีนี้คือสตริง "string")
(/a/gi)
นี่คือ RegEx จริง มันอ่านว่า "ค้นหาอักขระก" มันง่ายมาก นอกจากนี้ยังมีธงสองตัวคือ "g" และ "i" ตัว "g" ระบุว่าให้ค้นหาทั้งหมดที่เกิดขึ้นของอักขระ "a" มิฉะนั้นจะพบเพียงคนแรกและจะไม่นับเลยจากหมายเลขหนึ่ง แฟล็กที่สองคือ "i" ทำให้ RegEx ตรงกับทุกกรณีของอักขระนั้น หากไม่มีแฟล็กนั้น (i) รหัสด้านบนจะนับ 4 เท่านั้นเนื่องจากจะข้ามตัวพิมพ์ใหญ่ "A" ในสตริง เนื่องจากตัว "i" จะจับคู่ตัวพิมพ์ใหญ่และตัวพิมพ์เล็ก ลบ "i" ถ้าคุณต้องการให้ตรงกับตัวพิมพ์เล็ก
string.match
ส่งคืนอาร์เรย์ของการจับคู่ทั้งหมดดังนั้นเราจึงใช้length
เมธอดเพื่อดึงข้อมูลจำนวนรายการอาร์เรย์ ง่ายๆแค่นั้นเอง!
a
" ในstring
แล้วstring.match(/a/gi)
เท่ากับและคุณมีข้อผิดพลาดnull
Cannot read property 'length' of null
เป็นเพราะถ้าเราต้องการนับอักขระประเภทใดก็ได้เราต้องพิจารณาสองนิพจน์ หนึ่งสำหรับทั่วไปตัวละครและที่สองสำหรับการพิเศษตัวอักษรตัวอย่างเช่น[
, ]
,^
และอื่น ๆ มันง่ายที่จะลืมมัน แต่แม้ว่าเราจะจำได้ แต่ฉันคิดว่าเรากำลังขยายโค้ดของเราโดยไม่จำเป็น
ใน กรณีนี้สำหรับสตริง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);