Javascript-Incasesensitiveif split()而不使用toLowerCase()或toUpperCase()

时间:2018-10-26 03:50:12

标签: javascript string

我正在尝试使用string方法拆分split(),但是它区分大小写,问题与标题中键入的相同。

问题是这样的

var str, ret;

str = "NubNubLabaLabaNubNub";
ret = str.split("labalaba"); // ret return ["NubNubLabaLabaNubNub"]

// which i wanted ["NubNub","NubNub"]

当我使用toLowerCase()toUpperCase()时,整个string将会改变,并且在拆分之后,我希望它成为原始的。

str = "NubNubLabaLabaNubNub";
ret = str.toLowerCase().split("labalaba".toLowerCase());

ret返回["nubnub","nubnub"],但我想要的结果是["NubNub","NubNub"]

我仍然不明白如何将"nubnub"返回到"NubNub"

谢谢。

1 个答案:

答案 0 :(得分:5)

您可以改用不区分大小写的正则表达式:

const str = "NubNubLabaLabaNubNub";
console.log(
  str.split(/labalaba/i)
);

如果要分割的字符串在变量中,请先escape it,然后将其传递给new RegExp

const escape = s => s.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&');

const str = "abcfoo()barabc";
const splitOn = 'foo()bar';
const re = new RegExp(escape(splitOn), 'i');
console.log(
  str.split(re)
);