javascript - 如何过滤掉字符串以仅包含香草Javascript中的字母?
问题描述
我得到了这个字符串:
var myMessage = "Learning is fun!"
这就是我尝试创建一个仅列出字母(没有空格和“!”)的数组的方式。
var myMessage = "Learning is fun!";
var arr1 = myMessage.split("");
function onlyLetters(array){
let arr2 = []
for(let i = 0; i < array.length; i++){
if(array[i] === "a" || "b" || "c" || "d" || "e"
|| "f" || "g" || "h" || "i" || "j" || "k" || "l"
|| "m" || "n" || "o" || "p" || "q" || "r" || "s"
|| "t" || "u" || "v" || "w" || "x" || "y" || "z"){
arr2.push(array[i])
}
}
return arr2
}
console.log(onlyLetters(myMessage))
我究竟做错了什么?另外,是否有列出字母“a”到“z”的简写?
解决方案
一种简单的方法可能是像这样使用正则表达式
let message = "Learning is fun!";
let onlyLettersArray = message.split('').filter(char => /[a-zA-Z]/.test(char));
console.log(onlyLettersArray)
.filter 接受一个数组并在元素上运行一个函数,该函数返回 true 或 false。如果返回 false,则删除该项目。正则表达式检查字符是否在 az 或 AZ 范围内
另一种方法是过滤 char 然后像这样拆分它
let message = "Learning is fun!";
let onlyLettersArray = message.replace(/[^a-z]+/gi, '').split('');
console.log(onlyLettersArray)
编辑:
var myMessage = "Learning is fun!";
var arr1 = myMessage.split("");
function onlyLetters(array){
let arr2 = []
for(let i = 0; i < array.length; i++){
if(/[a-z]/.test(array[i])){ // you can use regex instead of all characters
arr2.push(array[i])
}
}
return arr2
}
console.log(onlyLetters(myMessage))
更新: 如果您必须替换字符串中的特殊字符而不是字符数组,则可以编写
let message = "Learning is fun!";
let letterMessage = message.replace(/[^a-zA-Z]/gm,"")
console.log(letterMessage)
推荐阅读
- swift - 如何从 iOS(Swift)获取 GCP Identity-Aware-Proxy 的访问令牌
- c# - How to upload file to blob container?
- machine-learning - 为什么我在线性回归中使用 train_test_split 方法时出现值错误
- python - 根据键/值标准聚合字典数组中的某些值
- flutter - 我应该在颤振中为我的自定义小部件使用通用前缀吗?
- python - Python:SqlAlchemy 将现有视图映射到 ORM 对象
- java - 使用 Maven 版本错误在 heroku 上部署 JAVA 应用程序
- python - 倒计时结束时开始游戏pygame
- javascript - react:调度和监听自定义事件
- azure - Azure 服务总线性能问题 MassTransit