local str="fdsfAkk!Gr%g&re"将这个字符串的每一个字母类型的字符计算出他在这个字符串的个数。
方法1:
用2个循环把每一个的字符与后面的进行比较。
str="fdsfAkk!Gr%g&re"
str=string.gsub(str,"%A","")
print(str)
str=string.upper(str)
str_chucun=""
for i=1,#str do
if string.find(str_chucun,string.sub(str,i,i)) then
else
str_chucun=str_chucun..string.sub(str,i,i)
n=1
for j=i+1,#str do
if string.sub(str,i,i)==string.sub(str,j,j) then
n=n+1
end
end
print(string.sub(str,i,i).." "..n)
--str_chucun=str_chucun..string.sub(str,i,i)
end
End
方法2:
str="fdsfAkk!Gr%g&re"
t={}
for i=1,26 do
t[i]=0
end
for i=1,#str do
for j=1,26 do
if string.byte(string.sub(str,i,i),1,1)==96+j or
string.byte(string.sub(str,i,i),1,1)==64+j then
t[j]=t[j]+1
end
end
end
sum=""
for k,v in pairs(t) do
if k==26 then
str=""
else
str=","
end
sum=sum..k.." "..v..str
end
print(sum)
方法3:
str="fdsfAkk!Gr%g&re"
for i=1,26 do
for j=1,#str do
if string.find(string.sub(str,j,j),"["..string.char(96+i)..string.char(64+i).."]") then
t[i]=t[i]+1
end
end
end
sum=""
for k,v in pairs(t) do
if k==26 then
str=""
else
str=","
end
sum=sum..k.." "..v..str
end
print(sum)