需要JavaScript多维数组吗?
我有一个字符串,看起来像这样: PRE_VALUE1=“TIMESTAMP”PRE_VALUE2=“String13” PRE_VALUE3=“”PRE_VALUE4=“1”PRE_VALUE5=“AK”PRE_VALUE6=“key6” POST_VALUE1=“000”VALUE8=“KE_Y1”PRE_VALUE9=“” PRE_VALUE10=“10.10.10.10” 我的目标是为每个需要JavaScript多维数组吗?,javascript,arrays,performance,Javascript,Arrays,Performance,我有一个字符串,看起来像这样: PRE_VALUE1=“TIMESTAMP”PRE_VALUE2=“String13” PRE_VALUE3=“”PRE_VALUE4=“1”PRE_VALUE5=“AK”PRE_VALUE6=“key6” POST_VALUE1=“000”VALUE8=“KE_Y1”PRE_VALUE9=“” PRE_VALUE10=“10.10.10.10” 我的目标是为每个PRE#值拆分第二个引号后的字符串。之后,我想构建一个简单的RegExp,它检查PRE#u值的引号中是
PRE#
值拆分第二个引号后的字符串。之后,我想构建一个简单的RegExp,它检查PRE#u值的引号中是否有内容
我几乎清楚上面的部分。我将使用split方法——这里是我的问题,我不确定如何告诉split方法它应该在第二个引号处而不是第一个引号处分割字符串
但是,我真正关心的是,如果拆分后的值与RexExp匹配到变量,我希望将其赋值。在给变量赋值之前,应该有一个简单的词来解释这个字段。
e、 g:
PRE_VALUE2=“String13”将是“String:String13”
如果我理解正确,最好也是最快的方法就是在这里使用多维数组。因为有很多这样的消息,而且“PRE_VALUE#”只通过RegExp为完整的输入字符串构建它应该有点慢,对吗
也许有人能帮我
提前谢谢 您可以在引号内搜索不引用字符
var string='PRE_VALUE1=“TIMESTAMP”PRE_VALUE2=“String13”PRE_VALUE3=”“PRE_VALUE4=“1”PRE_VALUE5=“AK”PRE_VALUE6=“key6”POST_VALUE1=“000”VALUE8=“KE_Y1”PRE_VALUE9=”“PRE_VALUE10=“10.10.10”,
成对=字符串
.match(/[^\s=]+=“[^”]*”/g)
.减少((r,s)=>{
var[,k,v]=s.match(/([^\s=]+)=“([^”]*)”/);
r[k]=v;
返回r;
}, {});
控制台日志(对)代码>
。作为控制台包装{max height:100%!important;top:0;}
而不是只使用正则表达式来过滤PRE\u VALUEx
值,您可以按空格然后按=
拆分字符串,以获得数组中所有相关的值,如下所示:
[[
“PRE_VALUE1”,
“时间戳”][
“PRE_VALUE2”,
“第13条”][
“前价值3”,
"" ], [
“PRE_VALUE4”,
"1" ], [
“PRE_VALUE5”,
“AK”][
“PRE_VALUE6”,
“键6”][
“POST_VALUE1”,
"000" ], [
“价值8”,
“KE_Y1”][
“前价值9”,
"" ], [
“前价值10”,
“10.10.10.10”]]
这就是代码应该是什么样子的:
var arr = string.split("\" ").map(x => {
x = x.replace(/\"/g, '');
return x.split("=");
});
演示:
let string=`PRE_VALUE1=“TIMESTAMP”PRE_VALUE2=“String13”PRE_VALUE3=”“PRE_VALUE4=“1”PRE_VALUE5=“AK”PRE_VALUE6=“key6”POST_VALUE1=“000”VALUE8=“KE_Y1”PRE_VALUE9=”“PRE_VALUE10=“10.10.10”`;
var arr=string.split(“\”).map(x=>{
x=x。替换(/\“/g,”);
返回x.split(“=”);
});
控制台日志(arr)代码>拆分互不相同的引用是不可能的,但是您可以在引用标记上当然分裂,甚至在生成的数组中考虑索引“n”、变量名和奇数索引“n+1”的变量值。当然有更好的方法来处理正则表达式,但我还是不太擅长这些…嗨,谢谢你的快速响应和帮助。这些解决方案在我看来有点完美-返回字符串时是否有办法更改前缀,例如“PRE_VALUE1”?还要将每个返回值保存在单独的变量中?@qwertzy欢迎使用SO:)如果空格在引号内怎么办?在这种情况下,我们将按“
进行拆分,以确保按相关空格进行拆分。是否有方法在返回字符串时更改前缀,例如字符串中的“PRE_VALUE1”?并将每个返回值保存在单独的变量中,以便记录“var1具有值时间戳”和var2的值为String13“@qwertzy在这种情况下,不返回return x.split(“=”)
使用return x.split(“=”)[1]
仅获取数组中的值,然后可以迭代数组并打印变量。