javascript - 如何区分字母和非字母?
问题描述
我正在创建一个密码,它接受一个字符串并更改每个字母以向前移动 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]
}
解决方案
如果您需要一个转换符号的密码,为什么不转换所有符号呢?
请参阅下面的片段:
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))
推荐阅读
- jolt - 以下输入和预期输出所需的颠簸规范
- python - 插值到密度较小的网格 + Python 中的最小二乘拟合
- angular - 如何在角度材料中动态启用更新按钮
- haproxy - 我可以使用 HAProxy 转换传出请求吗?
- postgresql - Postgresql:访问路径中的各个点?
- python - 不在 SQLite 中不同月份的两个日期之间选择数据
- php - laravel 紧凑数据不会在 home.blade.php 中读取
- java - Hive ddl 失败并出现 java.lang.ClassNotFoundException - org.apache.hadoop.hive.serde2.SerDe
- javascript - React Native,无法清理gradlew
- python - 我能做些什么来让我的 split() 函数正常工作吗?