Я пытаюсь разбить 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
return ["nubnub","nubnub"]
но результатом, который я хотел, является ["NubNub","NubNub"]
Я до сих пор не понимаю, как вернуть "nubnub"
в "NubNub"
Благодарю.
Вместо этого вы можете использовать регулярное выражение, не учитывающее регистр:
const str = "NubNubLabaLabaNubNub";
console.log(
str.split(/labalaba/i)
);
Если строка для разделения включена в переменной, сначала откройте ее, а затем передайте ее в 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)
);
spl = "labalaba"
? и выполняется какstr.split("/"+spl+"/i")
похоже, не работает.new RegExp
. (если в строке нет спецсимволов, не нужно ее экранировать)