所以我有一个由多个项组成的字符串,并用“+”或“ - ”分隔。该字符串包含5个元素:typeCode,versionCode,lengthCode,partCode,最后一部分是数据。每种类型的长度都需要是可变的,因此typeCode的长度可以为2,但也可以是5的长度。总字符串的最大长度为30个字符,但根据长度的不同,它可能会更短。最后的数据。当每个部分的长度固定时,我能够将它分开(2是我曾经使用过的),但我希望它灵活而不是硬编码。
我想将每个字符串拆分为5个元素作为数组。每个元素的分隔符是“+”或“ - ”,如示例中所示。我不希望分隔符包含在任何元素中。在第一个元素之前或最后一个元素之后没有拆分字符。
我还希望能够确定最后一个分隔符是“+”还是“ - ”,并将其作为数组中的元素。
我相信这可以通过使用String.split(separator)的RegEx来完成,其中 separator 是javascript中的字符串或RegEx,但我不确定。我不知道RegEx。
输入和所需输出的示例:
01 + 03 + 03 + 00-3f2aec1f6b088a1c
= [“01”,“03”,“03”,“00”,“ - ”,“3f2aec1f6b088a1c”]
01 + 03 + 03 + 01 + acaa4ece96da0e31
= [“01”,“03”,“03”,“01”,“+”,“acaa4ece96da0e31”'
011 + 031 + 03 + 01 + acaa4ece96da0e31
= [“011”,“031”,“03”,“01”,“+”,“acaa4ece96da0e31”
答案 0 :(得分:4)
Label1 Input1 Checkbox1
Label2 Input2 Checkbox2
完全符合您的要求。
从Javascript控制台:
/[+-]/g
要查找最后一个分隔符,可以从输入字符串中选择它:
"01+03+03+00-3f2aec1f6b088a1c".split(/[+-]/g)
> (5) ["01", "03", "03", "00", "3f2aec1f6b088a1c"]
或者您可以使用正则表达式,@ Jeffrey Westerkamp在评论中建议
data = "01+03+03+00-3f2aec1f6b088a1c";
chunks = data.split(/[+-]/g);
lastDelimiter = data.charAt(data.length - chunks[chunks.length - 1].length - 1)
答案 1 :(得分:0)
捕获最后一个分隔符的其他可能性:
"01+03+03+00-3f2aec1f6b088a1c".split(/[+-](?!\w+$)|([+-])/).filter(i=>i!==undefined)
或更严格:
(?!\w+$)
这个想法包括对所有不是最后一个分隔符的分隔符使用第一个分支(使用负向前瞻old-id
进行测试),并使用第二个分支和最后一个分隔符的捕获组。由于未为最后一个定义的所有分隔符定义捕获组,因此需要过滤结果数组中的所有未定义项。