首页 > 解决方案 > 将字母转换为逗号分隔的数字?

问题描述

我正在尝试创建一个按钮,将“TextCollector”输入中的文本显示为用逗号分隔的数字,并忽略任何不在字母表中的符号。更新:我还需要它来忽略字母大写的事实。

例子:

a = 1

b = 2

c = 3

等等...

因此,如果我在底部的输入中输入“cat's”,将显示“3,1,20,19”。

这是我到目前为止所尝试的:

<form action="">
  <input type="text" id="TextCollector" name="TextCollector" placeholder="Type in something">
  <br>
  <input type="button" value="Submit" onclick="ShowMe()">
</form>


<h1 id="numbers"></h1>


<script>
  function ShowMe() {
    var text = document.getElementById("TextCollector").value;
    var textnum = text.charCodeAt(0) - 97;

    document.getElementById("numbers").innerHTML = textnum;
  }

</script>

但是我尝试了一半的代码,它只是将第一个字母显示为一个数字,而忽略了其余的。我的代码“0”也是“a”,但我需要“1”才能成为“a”。

有人能帮我吗?我希望我说清楚了...

标签: javascripthtmlcharacter-replacement

解决方案


首先.replace将所有非字母字符与空字符串,然后您可以将生成的字符串转换为数组,.map每个字符为其字符代码,并用逗号将其连接起来:

function ShowMe() {
  const replaced = document.getElementById("TextCollector").value.replace(/[^a-z]/gi, '').toLowerCase();
  document.getElementById("numbers").textContent = [...replaced]
    .map(char => char.charCodeAt(0) - 96)
    .join(', ');
}
<form action="">
  <input type="text" id="TextCollector" name="TextCollector" placeholder="Type in something">
  <br>
  <input type="button" value="Submit" onclick="ShowMe()">
</form>


<h1 id="numbers"></h1>


推荐阅读