我有2个字符串:
"test:header_footer"
"test_3142"
我想获得数组:
array = "test:header_footer".split(":") // ['test', 'header_footer']
array2 = "test_3142".split("_") // ['test', '3142']
我可以将它与正则表达式结合起来得到相同的结果吗?
function(s) {
retutn s.split(/:|_/) // return bad value
}
因此,如果字符串包含':'
- 不会被第二个'_'
答案 0 :(得分:1)
您可以编写一行方法来检查:
并根据该条件进行拆分。
var text = "your:string";
var array = text.split(text.indexOf(":") >= 0 ? ":" : "_"); // ['your', 'string']
var text2 = "your_string";
var array2 = text.split(text.indexOf(":") >= 0 ? ":" : "_"); // ['your', 'string']
var text3 = "your:other_string";
var array3 = text.split(text.indexOf(":") >= 0 ? ":" : "_"); // ['your', 'other_string']
这将检查:
,如果找到,则按:
拆分,否则按_
拆分。
答案 1 :(得分:0)
您可以在字符串上使用includes
方法来确定是否存在:
。如果是用冒号分割String,否则用下划线拆分String。
split_string = s => s.includes(":") ? s.split(":") : s.split("_");
//test strings
let str = "my:string_demo",
str2 = "my_string_demo",
str3 = "myString:demo_thing",
//string function
split_string = s => s.includes(":") ? s.split(":") : s.split("_");
console.log(
str, split_string(str)
);
console.log(
str2, split_string(str2)
);
console.log(
str3, split_string(str3)
);