从一个字符串中,我需要知道有多少个字符而不计算空格或数字并将其发送到打印,以及另一个函数告诉我是否有数字以及相同的字符串有多少,即使没有空格,这就是到目前为止我已经做到了。
我已经得到了多少个字符,但我不希望它计算数字,我希望它们分开:
function cadenaNumerosLetras(){
var frase = document.getElementById(‘cadena’).value;
var letterCount = frase.split(/\W/).join('').length;
var contadorLetras = letterCount.toString();
console.log(letterCount);
document.getElementById(‘resultado’).value = contadorLetras;
var numeros = "0123456789";
if(!isNaN(frase)){
for(i=0; i<frase.length;i++){
if(numeros.indexOf(frase.charAt(i),0)!=-1){
return 1;
document.getElementById('numeros').innerHTML= frase;
}
}
return 0;
}
}
要获取不带空格的字符串的长度,只需删除它们并获取结果字符串的长度:
要计算数字,您不必关心字符串是否包含空格:空格不是数字。您可以使用
Array.prototype.forEach( )
、 throughcall( )
和将字符串作为参数传递。并且,为了比较,使用
charCodeAt( )
,它返回该位置字符的ASCII 码。最后,如果您想在一次调用中完成所有操作,则可以返回一个对象:
编辑
要计算数字,也可以使用
Array.prototype.reduce( )
它......它甚至更简单:@Trauma 的答案的变体,使 reduce 更优雅:
函数式编程万岁!
根据你说的,你需要:
我会使用 的回调,分别
replace()
传递 2 个正则表达式, 以便一次获得您需要的所有内容:[^\s^\d]
\d
如果您只想要金额,您可以使用
reduce()
andtest()
:我认为这个问题也可以通过更常见的功能以简单的方式解决,
split()
例如:join()
filter()
您可以将示例的结果与其他答案的结果进行比较,您会发现它们是相同的。
我希望我对解决问题有所贡献,问候。