【问题标题】:How do I deciphering between letters and non letters?如何区分字母和非字母?
【发布时间】:2018-06-26 17:18:32
【问题描述】:

我正在创建一个密码,它接受一个字符串并更改每个字母以向前移动 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]
}

【问题讨论】:

  • 您可以使用简单的正则表达式来确定字符是否在 A-Z 或 a-z 的范围之间。
  • 有多种方法可以在 JavaScript 中检查字符串是否为数字,我想如果您要搜索的话,所有这些方法都在 StackOverflow 上得到了很好的记录。考虑做一些更多的研究并自己做一些尝试,然后如果你想不通,就来这里提供不起作用的具体示例。
  • 为什么不使用 ASCII 码代替字母数组?那肯定会涵盖更多符号。

标签: javascript


【解决方案1】:

有两种方法:

一种方法是使用[a-zA-Z]{1} 类型的正则表达式,或者您可以尝试类似的方法

if(c >= 'a' && c <= 'z' || c >= 'A' && c <= 'Z')

【讨论】:

    【解决方案2】:

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

    参见下面的 sn-p:

    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))

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-12-11
      • 2020-06-14
      • 1970-01-01
      • 2017-11-21
      • 1970-01-01
      • 1970-01-01
      • 2022-01-13
      • 1970-01-01
      相关资源
      最近更新 更多