Javascript 在两个重复出现的字符之间拆分字符串
我在变量中有动态值,每个变量用[和]分隔,例如Javascript 在两个重复出现的字符之间拆分字符串,javascript,Javascript,我在变量中有动态值,每个变量用[和]分隔,例如 var data="[Continuing] [Returning] "; or var data="[ACCT_BBA] "; or var data="[12001] [12009] [21077] [13880] "; var data="[13880] "; 是否有一种方法可以使用split函数从上面提取[和]之间的值 var arr= data.split("<what goes here?>"); e、 g.在最后一个要
var data="[Continuing] [Returning] "; or
var data="[ACCT_BBA] "; or
var data="[12001] [12009] [21077] [13880] ";
var data="[13880] ";
是否有一种方法可以使用split函数从上面提取[和]之间的值
var arr= data.split("<what goes here?>");
e、 g.在最后一个要检索的示例中:120012009210713880
data.split('] [').map(function (item) { return item.replace("]", "").replace("[", "")})
像这样:
//var数据=[继续][返回];
//var数据=[ACCT_BBA];
var数据=[12001][12009][21077][13880];
var res=data.split']['.mapfunction项{return item.replace],.replace[,}
console.logres使用
像这样:
//var数据=[继续][返回];
//var数据=[ACCT_BBA];
var数据=[12001][12009][21077][13880];
var res=data.split']['.mapfunction项{return item.replace],.replace[,}
控制台。logres
你应该做这项工作,或者如果你的起点和终点都不确定的话
data.replace(/^\s*\[|\]\s*$/g, "").split("] [")
或者,如果您需要更复杂的东西,通常可以选择使用全局正则表达式,或者如果您需要处理任意嵌套的结构,则可以构建自己的解析器
你应该做这项工作,或者如果你的起点和终点都不确定的话
data.replace(/^\s*\[|\]\s*$/g, "").split("] [")
或者,如果您需要更复杂的内容,通常可以选择使用全局正则表达式,或者如果需要处理任意嵌套结构,则可以构建自己的解析器。如果需要:
var data="[12001] [12009] [21077] [13880]";
var arr = data.split(" ");
for(let i = 0; i < arr.length; i++){
arr[i] = arr[i].replace('[','');
arr[i] = arr[i].replace(']','');
}
console.log(arr);
仅举一个例子,非常基本。如果您这样做了,则是:
var data="[12001] [12009] [21077] [13880]";
var arr = data.split(" ");
for(let i = 0; i < arr.length; i++){
arr[i] = arr[i].replace('[','');
arr[i] = arr[i].replace(']','');
}
console.log(arr);
这只是一个非常基本的示例。关于data.match/\[\w+\]/g.mape=>e.slice1,-1呢
您可以将\w替换为字符的作用域,如[a-zA-Z0-9\]关于data.match/\[\w+\]/g.mape=>e.slice1,-1
您可以用字符的作用域替换\w,比如[a-zA-Z0-9.]您到底想提取什么?我认为OP想要归档的是在大括号之间获取值,例如var data=[继续][返回];to var values=[继续,返回];您可以使用正则表达式对此进行存档。您希望提取什么?我认为OP想要存档的是在大括号之间获取值,例如var data=[继续][返回];to var values=[继续,返回];您可以使用正则表达式对此进行存档。在这个简单的情况下,这将失败:[[1][[2]],而没有任何[或]但是应该。您需要对第一个元素的第一个字符和最后一个元素的最后一个字符应用替换-不使用map@Hogan然而,这不是一个用例given@mplungjan-见Bergi的回答。OP的意图很清楚…不要更改括号内的内容,至少我在阅读需求后会这么认为30年左右。@D.Rattansingh:但它确实在最后一个值中留下了尾随空格。这将在这个简单的情况下失败:[[1]][[2]],它不会有任何[或]但是应该。您需要对第一个元素的第一个字符和最后一个元素的最后一个字符应用替换-不使用map@Hogan然而,这不是一个用例given@mplungjan-见Bergi的回答。OP的意图很清楚…不要更改括号内的内容,至少我在阅读需求后会这么认为大约30年了。@D.Rattansingh:但它确实在最后一个值中留下了尾随空格,非常漂亮。而且比asenovm的答案更快,后者有一个bug。部分工作。提取的最后一个值仍然有一个“]。从我运行的测试来看,mplungjan解决方案是working@D.Rattansingh:这表明您的数据不会以“]结尾。也许还有空间?如果您需要处理这种情况,您可能希望使用.replace/^\s*\[\124;\]\ s*$/g,而不是简单地切掉第一个和最后一个字符。是的,对不起,我现在检查了,字符串末尾还有一个空格非常好。而且比阿塞诺维姆的答案还快,这个答案有一个bug,部分有效。最后提取的值仍有一个“]。从我运行的测试来看,mplungjan解决方案是working@D.Rattansingh:这表明您的数据不会以“]结尾。也许还有空间?如果您需要处理这种情况,您可能希望使用.replace/^\s*\[\124;\]\ s*$/g,而不是简单地切掉第一个和最后一个字符。是的,对不起,我现在检查了,字符串末尾还有一个空格