我得到了这个字符串:
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”的简写吗?
答案 0 :(得分:0)
一种简单的方法可能是像这样使用Regex
let message = "Learning is fun!";
let onlyLettersArray = message.split('').filter(char => /[a-zA-Z]/.test(char));
console.log(onlyLettersArray)
.filter接受一个数组并在元素上运行一个函数,该函数返回true或false。如果该项目返回false,则将其删除。 正则表达式检查字符是否在a-z或A-Z范围内
另一种方法是过滤字符,然后像这样分割它
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)
答案 1 :(得分:0)
您只需使用String.prototype.match
即可仅获取字母数组。
let arr = "Learning is fun! 1233 ashdgahsgdh".match(/[A-Za-z]/g);
console.log(arr)
答案 2 :(得分:0)
您可以采用小写字符串,将其分割并检查每个字符,如果该值大于或等于'a'
而小于或等于'z'
。
最后,过滤后,您可以通过将数组与空字符串作为粘连来返回字符串。
function onlyLetters(string) {
return string
.toLowerCase()
.split("")
.filter(c => c >= 'a' && c <= 'z')
.join('');
}
console.log(onlyLetters("Learning is fun!"));
答案 3 :(得分:0)
由于OP是初学者,所以我将提出另一种不使用正则表达式的解决方案
var myMessage = "Learning is fun!";
var arr1 = myMessage.split("");
function onlyLetters(array){
let arr2 = []
for(let i = 0; i < array.length; i++){
if(isLetter(array[i])){
arr2.push(array[i])
}
}
return arr2
}
function isLetter(c) {
return c.toLowerCase() != c.toUpperCase();
}