如一个字符串:s="asdsdsadsadd";
char[] ss = s.toCharArray();
要求输入的结果是:a=3,s=4,d=5.用js解决。
不大明白楼主的意思,楼主是不是要这样的代码?
[code="js"]
function test(s) {
var hash={};
s.replace(/[a-z]/ig,function ($1) {
alert($1);
if ($1 in hash)
hash[$1]++;
else
hash[$1]=1;
});
return hash;
}
[/code]
没看明白问题是什么
事实上楼主已经说出解决问题的方法了,一个散列表,以字符串(如"番茄炒蛋")作为键名,以数量作为键值,遇到"番茄炒蛋",就将$data["番茄炒蛋"]++;
按楼主的说法,你首先要知道要匹配的列表对吧,比如这个列表是:{"番茄炒蛋","泡椒牛柳","香干肉丝","蜜汁鸡腿"}
楼上的代码即可,可以这么写:
[code="java"]
function test(s) {
var hash={};
s.replace(/番茄炒蛋|泡椒牛柳|香干肉丝|蜜汁鸡腿/ig,function ($1) {
alert($1);
if ($1 in hash)
hash[$1]++;
else
hash[$1]=1;
});
return hash;
}
function init() {
var hash = test('"番茄炒蛋","泡椒牛柳","香干肉丝","番茄炒蛋","香干肉丝","蜜汁鸡腿"');
for (x in hash) {
alert(x + ':' + hash[x] + '份');
}
}
[/code]
楼主也可以不用正则表达式,将字符串split开for循环啊!!!
直接上代码(说实话,楼主对问题不是分析得很清楚)
[code="js"]
function getInputData() {
//这里从用户输入中读取数据,比如从HTML中读取,最终组成这样的数据就行了
return ['番茄炒蛋','番茄炒蛋','番茄炒蛋','香干肉丝'];
}
var hash={},data=getInputData();
for (var i=0;i<data.length;i++) {
hash[data[i]]=(hash[data[i]] || 0)+1;
}
//其它的代码自己写吧
[/code]
还不明白吗?啊………………
楼上写的很好,分给他吧哈。