首页 > 解决方案 > 如何区分字母和非字母?

问题描述

我正在创建一个密码,它接受一个字符串并更改每个字母以向前移动 3 个空格。例如“你好!” 会变成“Khoor!”,但我遇到了障碍。当人们输入不是字母的东西时,比如“!” 或字母之间的空格,我希望能够返回该值。所以一个“!” 会留下一个“!” 一个空间将保持一个空间。我想在循环内创建一个 if 语句来完成此操作,但是如何区分字母和非字母呢?

附加的是我的循环,我希望能够放入一个 if 语句,这样它就会显示“如果输入是非字母,则返回输入。如果输入是一个字母,则向前移动 3 个空格。”

var alphabet = ["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"];
var string = "Hello World!"
var stringArr = string.split("")
var codedLet = [];

for (var i = 0; i < string.length; i++) {
  var input = stringArr[i].toLowerCase()
  var codedNum = alphabet.indexOf(input) + 3
  codedLet[i] = alphabet[codedNum]
}

标签: javascript

解决方案


如果您需要一个转换符号的密码,为什么不转换所有符号呢?

请参阅下面的片段:

let string = "Hello World!"

const cipher = (s) => [...s].reduce(
(a, l) => a + String.fromCodePoint(l.codePointAt() + 3), '')

const decipher = (s) => [...s].reduce(
(a, l) => a + String.fromCodePoint(l.codePointAt() - 3), '')

let cs = cipher(string)

console.log(cs)
console.log(decipher(cs))


推荐阅读