如果我有一个给定的字符串,使用JavaScript,是否可以根据ASCII码从其中删除某些字符,并返回剩余的字符串,例如,从字符串中删除所有ASCII码< 22的字符?
发布于 2020-04-14 20:32:54
事实证明,有很多不同的解决方案,下面是一个简短的概述(从最快到最慢排序)
一个简单的for循环
let finalString = "";
for(let i = 0; i < myString.length; i++ ) {
if(myString.charCodeAt(i) < 22) continue;
finalString += myString.charAt(i);
}速度(基准测试):82,600次/秒±1.81%
拆分和过滤字符串后的For循环
const newStringArray = myString.split("").filter(e => e.charCodeAt(0) > 22)
let finalString = ""
for(let i = 0; i < newStringArray.length; i++ ) {
finalString += newStringArray[i]
}速度(基准测试):55,199次/秒±0.53%
慢33.17%
一个带.join的班轮
const newString = myString.split("").filter(e => e.charCodeAt(0) >= 22).join("");速度(基准测试):18,745次/秒±0.28%
慢77.31%
一个带.reduce的班轮
const newString = myString.split("")
.filter(e => e.charCodeAt(0) > 22)
.reduce( (acc, current) => acc += current, "");速度(基准测试):17,781次/秒±0.23%
慢78.47%
基准测试
基准测试可以在这里找到:https://jsbench.me/50k8zwue1p

发布于 2020-04-14 20:32:59
您可以遍历字符串并对每个字母使用charCodeAt( letter ),这样您就可以知道它的ASCII码,然后就可以执行if语句了。
发布于 2020-04-14 20:36:56
是的,使用javascript的str.charCodeAt()方法是可能的。可以将给定的字符串转换为字符数组,然后使用map方法将每个字符与要用来比较字符串字符的ASCII代码进行比较。
这将返回一个符合条件的新数组,然后您可以连接该数组以再次形成字符串。
https://stackoverflow.com/questions/61207729
复制相似问题