为了账号安全,请及时绑定邮箱和手机立即绑定

多行字符串 findIndex()

多行字符串 findIndex()

梵蒂冈之花 2022-05-22 10:13:00
我试图在我的字符串中找到一个多行子字符串。我的代码:data = `if (res) {                                new PNotify({                                    title: TAPi18n.__('success'),                                    text: TAPi18n.__('image_uploaded'),                                    type: 'info',                                    styling: 'bootstrap3'                                });                            }                            if (err) {                                return new PNotify({                                    title: TAPi18n.__('error'),                                    text: err,                                    type: 'error',                                    styling: 'bootstrap3'                                });                            }`;/*not found...*/match = `new PNotify({              title: TAPi18n.__('error'),              text: err,              type: 'error',              styling: 'bootstrap3'            })`;console.log(data);console.log(match);console.log(data.indexOf(match));那条线console.log(data.indexOf(match));告诉我-1。我的代码有什么问题?我怎样才能进行多行搜索?
查看完整描述

2 回答

?
饮歌长啸

TA贡献1951条经验 获得超3个赞

match问题是和之间的空格数量不匹配data。


您可以转换match为允许可变数量空白的正则表达式。


第一个match.replace()用于转义字符串中的所有特殊正则表达式字符,第二个将空格转换为,\s+以便匹配任意数量。


data = `if (res) {

                                new PNotify({

                                    title: TAPi18n.__('success'),

                                    text: TAPi18n.__('image_uploaded'),

                                    type: 'info',

                                    styling: 'bootstrap3'

                                });

                            }

                            if (err) {

                                return new PNotify({

                                    title: TAPi18n.__('error'),

                                    text: err,

                                    type: 'error',

                                    styling: 'bootstrap3'

                                });

                            }`;



match = `new PNotify({

              title: TAPi18n.__('error'),

              text: err,

              type: 'error',

              styling: 'bootstrap3'

            })`;

re = new RegExp(match.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&').replace(/\s+/g, '\\s+'));


result = data.match(re);

console.log(result && result.index);


查看完整回答
反对 回复 2022-05-22
?
翻过高山走不出你

TA贡献1875条经验 获得超3个赞

您需要在比较它们之前对字符串进行规范化


这是一个简单的函数,可以按行拆分字符串并删除每行的空格,然后再将所有内容重新组合在一起


function normalizeString(str){

  return str.split('\n').map(e => e.trim()).join('')

}

输出:


data = `if (res) {

                                new PNotify({

                                    title: TAPi18n.__('success'),

                                    text: TAPi18n.__('image_uploaded'),

                                    type: 'info',

                                    styling: 'bootstrap3'

                                });

                            }

                            if (err) {

                                return new PNotify({

                                    title: TAPi18n.__('error'),

                                    text: err,

                                    type: 'error',

                                    styling: 'bootstrap3'

                                });

                            }`;


/*not found...*/

match = `new PNotify({

              title: TAPi18n.__('error'),

              text: err,

              type: 'error',

              styling: 'bootstrap3'

            })`;


// normalize strings

var normalizedData = data.split('\n').map(e => e.trim()).join('')

var normalizedMatch = match.split('\n').map(e => e.trim()).join('')


console.log(normalizedData)

console.log(normalizedMatch)

console.log(normalizedData.indexOf(normalizedMatch));


查看完整回答
反对 回复 2022-05-22
  • 2 回答
  • 0 关注
  • 176 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信