嗨我在javascript基础知识方面有一些根源,但我正试图进入jquery,因为我认为它有更好的搜索系统或功能。无论哪种方式,我想要帮助的是创建一种搜索类型的搜索,它将扫描变量中包含的数据并使用它来使用构造函数自动创建对象。但是让我们从小做起。 我想弄清楚的一件事就是创建一个搜索功能,它可以识别我想要提取的单词或单词,然后存储到另一个变量中以供日后使用。
以下是我需要完成的一些视觉效果。
假设我有以下变量。
textData = "&@^%! $%)#AAx1<# >^$(!($< BBx2<((@!^@(#^%))CCx24 33 80<#%#* ";
var name1;
var name2;
var list1[];
我需要扫描“textData”直到我到达字母Combos或标记如“AAx”,然后取下一个项目,数字“1”并将其存储到变量“name1”等等直到变量填写如下:
name1 = 1;
name2 = 2;
list1 = [24, 33, 80];
多一点解释。请注意,当识别出标记AAx,BBx和CCx时,后面的数字是记录/存储的数字。特别是数组“list1”,它继续存储数字,直到下一个元素不是一个数字,而是一个小于号的符号“&lt;”,类似于name1和name2的情况。
我在网上看过的js搜索教程的大多数例子都是在两个空格或单个字母数字/符号选择器之间处理一个完整的单词。我确定我需要做的是使用一个带有if语句的循环,它会找到“AAx”的第一个匹配,然后我就失去了如何编写将接收该标记的信息的代码,然后停在“&lt;”。然后继续下一个标记,BBx和CCx。 我感谢任何帮助。
答案 0 :(得分:0)
我想这就是你要找的......我会在一个阵列中给你结果,由你决定其余部分。
var r = /([A-Z])\1x([\d\s]+)/g,
s = "&@^%! $%)#AAx1<# >^$(!($< BBx2<((@!^@(#^%))CCx24 33 80<#%#* ",
m = [];
while (m[m.length] = r.exec(s));
m.length--;
m = m.map(e => e[2].split(" ").map(e => e*1));
console.log(JSON.stringify(m));
&#13;
答案 1 :(得分:0)
使用的字符串函数
/xxx/g
用于全局替换)使用的数组函数
数字函数
map
至Number
将每个项目转换为数字值)
var string = "&@^%! $%)#AAx16<# >^$(!($< BBx2<((@!^@(#^%))CCx24 33 80<#%#*&@^%! $%)#AAx16<# >^$(!($< BBx2<((@!^@(#^%))CCx24 34 81<#%#*&@^%! $%)#AAx16<# >^$(!($< BBx2<((@!^@(#^%))CCx24 35 82<#%#*";
var result = [];
//Result: TOParray = [ [16, 2, [24,33,80]] [16, 2, [24,33,80]] [16, 2, [24,33,80]] ];
var arr = string
.replace(/AA/g, '<CUTHERE>AA')//set markers to cut
.split('<CUTHERE>');//split at each marker
arr.shift();//remove first element which doesnt have any value
arr
.forEach(function(item){//iterate through each element
var a = +/AAx(\d+)*/.exec(item)[1];//get number followed by AAx
var b = +/BBx(\d+)*/.exec(item)[1];//get number followed by BBx
var c = /CCx([\d\s]+)*/.exec(item)[1].split(" ").map(Number);//get number and spaces followed by BBx and split it at spaces and convert them to number
result.push([a,b,c]);//push these to result array
});
console.log(result);
&#13;