我有一个这样的字符串:使用正则表达式可能会提高字符串解析的性能?
// string1
horse|cow|goat|zebra|
和另一个字符串是这样的:
// string2
horse:a,pig:b,cow:z,monkey:g,goat:a,
我的目标是拆分字符串1,然后挑出它的任何出现在字符串2,建立一个直方图。我目前做这个:
var histogram = {};
var animals = string1.split("|");
for (var i = 0; i < animals.length; i++) {
var animal = animals[i];
var animalColon = animal + ":";
var index = string2.indexOf(animalColon);
while (index != -1) {
var indexColon = index + animalColon.length;
var indexFinal = string2.indexOf(",", indexColon);
var letter = string2.substring(indexColon, indexFinal);
if (histogram[letter] == null) {
histogram[letter] = 1;
}
else {
histogram[letter] = histogram[letter] + 1;
}
index = string2.indexOf(animalColon, index + 1);
}
}
末,它可能会打印出类似这样:
// histogram:
a: 2 instances // from { horse, goat }
z: 1 instance // from { cow }
以上的工作,但我有与DP animals.length通过字符串2检查大家。
有没有办法使用正则表达式来做这个解析 - 本质上并行地运行所有的测试,而不是做多次通过?由于string2是常量,似乎所有的检查都可以同时完成(不知道是否像这样实现了正则表达式)。
我增加了字符串1和字符串元素的数量成千上万元素的顺序上,它仍然运行相当快,但很担心较慢的机器,可维护性和类似的东西,
感谢