Javascript 多行字符串findIndex()
我试图在字符串中找到一个多行子字符串 我的代码: 数据=`if res{ 新通知{ 标题:TAPi18n.“成功”, 文字:TAPi18n.uuuu‘上传图像’, 键入:“info”, 样式:“bootstrap3” }; } 如果出错{ 返回新PNotify{ 标题:TAPi18n.“错误”, 文本:呃, 键入:“错误”, 样式:“bootstrap3” }; }`; /*找不到*/ match=`new PNotify{ 标题:TAPi18n.“错误”, 文本:呃, 键入:“错误”, 样式:“bootstrap3” }`; 控制台日志数据; console.logmatch;Javascript 多行字符串findIndex(),javascript,string,find,multiline,Javascript,String,Find,Multiline,我试图在字符串中找到一个多行子字符串 我的代码: 数据=`if res{ 新通知{ 标题:TAPi18n.“成功”, 文字:TAPi18n.uuuu‘上传图像’, 键入:“info”, 样式:“bootstrap3” }; } 如果出错{ 返回新PNotify{ 标题:TAPi18n.“错误”, 文本:呃, 键入:“错误”, 样式:“bootstrap3” }; }`; /*找不到*/ match=`new PNotify{ 标题:TAPi18n.“错误”, 文本:呃, 键入:“错误”, 样式
console.logdata.indexOfmatch 问题是匹配和数据之间的空间量不匹配 您可以将match转换为允许可变空白量的正则表达式 第一个match.replace用于转义字符串中的所有特殊regexp字符,第二个将空格转换为\s+,以便匹配任何数量 数据=`if res{ 新通知{ 标题:TAPi18n.“成功”, 文字:TAPi18n.uuuu‘上传图像’, 键入:“info”, 样式:“bootstrap3” }; } 如果出错{ 返回新PNotify{ 标题:TAPi18n.“错误”, 文本:呃, 键入:“错误”, 样式:“bootstrap3” }; }`; match=`new PNotify{ 标题:TAPi18n.“错误”, 文本:呃, 键入:“错误”, 样式:“bootstrap3” }`; re=new RegExpmatch.replace/[-\/\^$*+?.|[\]{}]/g,\\$&.replace/\s+/g,\\\s+; 结果=data.matchre; console.logresult&&result.index 在比较字符串之前,需要对其进行规范化 这里有一个简单的函数,可以将字符串按行分割,并在将所有内容重新连接到一起之前删除每行的空白 函数normalizeStringstr{ 返回str.split'\n'.mape=>e.trim.join } 输出: 数据=`if res{ 新通知{ 标题:TAPi18n.“成功”, 文字:TAPi18n.uuuu‘上传图像’, 键入:“info”, 样式:“bootstrap3” }; } 如果出错{ 返回新PNotify{ 标题:TAPi18n.“错误”, 文本:呃, 键入:“错误”, 样式:“bootstrap3” }; }`; /*找不到*/ match=`new PNotify{ 标题:TAPi18n.“错误”, 文本:呃, 键入:“错误”, 样式:“bootstrap3” }`; //规范化字符串 var normalizedData=data.split'\n'.mape=>e.trim.join var normalizedMatch=match.split'\n'.mape=>e.trim.join console.lognormalizedData console.lognormalizedMatch
console.lognormalizedData.indexofnormalizeddmatch;match在每行开头的空格数与数据的匹配部分的空格数不同。如果要允许可变的空格数,则需要使用正则表达式。