Javascript 如何比较内部有双空格的文本(“a b”与“a b”相等)?

Javascript 如何比较内部有双空格的文本(“a b”与“a b”相等)?,javascript,Javascript,我有一些常量文本,我想检查用户的输入是否与此文本相等,并具有一定的灵活性。 我希望允许输入传递,即使大小写不同(已经知道如何做),或者由于多个空格而不同 const statement = 'Please enter this text'; const isEqual = (first, second) => { ... } isEqual(statement, "please enter this text"); // should be true isEqual

我有一些常量文本,我想检查用户的输入是否与此文本相等,并具有一定的灵活性。 我希望允许输入传递,即使大小写不同(已经知道如何做),或者由于多个空格而不同

const statement = 'Please enter this text';

const isEqual = (first, second) => { ... }

isEqual(statement, "please enter this text"); // should be true
isEqual(statement, " please Enter this text "); // should be true
isEqual(statement, "please Enter   this text"); // should be true
isEqual(statement, "please Enterthis text"); // should be false
isEqual(statement, "ple ase Enter this text"); // should be false

使用这个功能,你就可以很好地使用了

const isEqual = (first, second) => {
  return first.toLowercase() === second.replace( /\s\s+/g, ' ' ).trim().toLowercase();
}
在这里,我们用单套管替换多个空间,然后降低两个管柱的套管,然后比较它们。下部外壳正在此处导入。

您需要:

  • trim
    字符串
  • 删除连续空格并将其替换为单个空格和
  • 使其小写,以忽略大小写敏感度
  • const语句='请输入此文本';
    常量normalizeString=(str)=>str.trim().replace(/\s+/g,“”).toLowerCase()
    常量相等=(第一,第二)=>normalizeString(第一)==normalizeString(第二)
    console.log(isEqual(语句“请输入此文本”)//应为true
    console.log(isEqual(语句“请输入此文本”)//应为true
    console.log(isEqual(语句“请输入此文本”)//应为true
    console.log(isEqual(语句“请输入此文本”)//应为false
    
    console.log(isEqual(语句,“请输入此文本”)//应为false
    这将为您提供预期的结果:

        const isEqual = (first, second) => { 
            first = first.trim().toLowerCase().replace(/\s\s+/g, ' ');
            second = second.trim().toLowerCase().replace(/\s\s+/g, ' ');
            
            if(first == second) {
                return true;
            }
            return false
        }
    

    事实上,你只想知道单词是否相同(顺序相同),你不在乎它们之间有多少空格

    const语句='请输入此文本';
    常数相等=(第一,第二)=>!first.localeCompare(second.match(/\w+/g).join(“”),'en',{sensitivity:'base'})
    log(isEqual(语句“请输入此文本”),“应为true”)
    log(isEqual(语句“请输入此文本”),“应为true”)
    log(isEqual(语句“请输入此文本”),“应为true”)
    log(isEqual(语句“请输入此文本”),“应为false”)
    log(isEqual(语句,“请输入此文本”),“应为false”)
    这是我的,但答案更好

    const语句='请输入此文本'
    常数相等=(第一,第二)=>{
    const arrFirst=first.toLowerCase().split(“”)
    const arrSecond=second.toLowerCase().split(“”).filter((t)=>{
    返回t
    })
    console.log(arrFirst.join(“”)==arrSecond.join(“”))
    }
    console.log(isEqual(语句“请输入此文本”)//应为true
    console.log(isEqual(语句“请输入此文本”)//应为true
    console.log(isEqual(语句“请输入此文本”)//应为true
    console.log(isEqual(语句“请输入此文本”)//应为false
    
    console.log(isEqual(语句,“请输入此文本”)//应为false
    ,因此字符串应相等,而不考虑大小写之间的空格?修剪前导空格和尾随空格,并用单个空格替换连续空格。