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

标签 javascript string

我正在尝试使用 split() 方法拆分字符串,但它区分大小写,问题如标题上所示。

问题是这样的

var str, ret;

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

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

当我使用toLowerCase()toUpperCase()时,整个字符串将会改变,分割后我希望它是一个原始的一个。

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

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

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

谢谢。

最佳答案

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

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)
);

关于Javascript - Incasesensitif split() 而不使用 toLowerCase() 或 toUpperCase(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53001138/

相关文章:

javascript - 使按钮可在按钮中的预定义时间+倒计时上单击

javascript - 使用部分替换存储为字符串的html元素

c++ - 每 8 位将 bitset<64> 转换为字符串

mysql - 在数据库中搜索文本字符串,可能是标签

javascript - Angularjs 单元测试解决 promise

Javascript 多人游戏 - 游戏/物理逻辑的 requestAnimationFrame?

javascript - asp.net 中的验证工具

javascript - three.js 相机绕 Y 轴的旋转似乎关闭

c++ - Printf 和 C++ 字符串

c - 如何修复此代码,以便它可以测试字符旁边存在的整数?