Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> JavaScript

การตรวจสอบสตริงที่มีตัวเลขใน JavaScript

ปัญหา

เราต้องเขียนฟังก์ชัน JavaScript ที่รับสตริง str ฟังก์ชันควรตรวจสอบตัวอักษรในสตริงตามตัวเลขที่อยู่หน้าพวกเขา

ต้องแยกสตริงด้วยตัวเลข แล้วเปรียบเทียบตัวเลขกับจำนวนตัวอักษรใน substring ถัดไป ถ้าตรงกันทุกคู่ สตริงถือว่าถูกต้อง คืน true ไม่งั้น false

เช่น:

5hello4from2me

ควรคืน true เพราะแยกได้ 'hello'(5), 'from'(4), 'me'(2) ความยาวตรงกับตัวเลขหน้าตัว

ตัวอย่าง

โค้ดตัวอย่างด้านล่าง:

const str = '5hello4from2me';
const validateString = (str = '') => {
  const lenArray = [];
  let temp = '';
  for (let i = 0; i < str.length; i++) {
    const el = str[i];
    if (+el) {
      lenArray.push([+el, '']);
    } else {
      const { length: len } = lenArray;
      lenArray[len - 1][1] += el;
    }
  }
  return lenArray.every(sub => sub[0] === sub[1].length);
};
console.log(validateString(str));

ผลลัพธ์

true

คำอธิบายเพิ่มเติม

โค้ด parse สตริงโดยอ่านตัวเลขเป็นความยาวที่คาดหวัง แล้วเก็บตัวอักษรตามไปเรื่อยๆ จนกว่าจะเจอตัวเลขถัดไป หรือจบสตริง ตรวจสอบท้ายด้วย every()