将字母更改为以逗号分隔的数字?

Change Letters into Numbers seperated by commas?

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

示例:

一=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"。

有人可以帮助我吗?我希望我说清楚了...

首先.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>

请允许我向您介绍几个概念,我强烈建议您学习这些概念,而不是复制粘贴给您的任何代码。我不打算详细介绍,因为老实说,您只需要知道如何在 google 搜索栏上提出正确的问题以获得答案。在 post.

的结尾,我还将讨论如何制定解决此类问题的策略。

循环

当你想多次重复一组指令时,你在编程中使用了循环。有多种写循环的方法,最流行的两种写循环的方法是:for循环while循环。其他不太流行的方法包括do looprecursion

类型

Javascript 是弱类型的,当您尝试添加一个带有整数的 bool 值时,会导致很多奇怪和意外的行为。原始类型的例子有:Integer、Boolean、Char、String 等。数字可以用多种方式表示:integer、double、float。不必太担心它们之间的差异,但如果您需要使用小数和负值,请使用浮点数。布尔值是 TRUE 或 FALSE。 Char(Character 的缩写)是数字和字母之间的映射。 (如果您想了解为什么您的代码在 运行 这一行时输出“0”而不是“1”,请阅读此文档:

text.charCodeAt(0) - 97;

运算符

你应该知道什么是 +、-、*、/,做小学数学 class。你还应该知道 >(大于)、<(小于)、>=(大于等于)、<=(小于等于)、==(等于)、!=(不等于)、&&(交集) , 也称为 AND), || (联合,也称为 OR)。还有一些生活质量运算符,例如:++(将值增加 1),--(将值减少 1),+=(将目标值增加给定的量),-=(将目标值减少给定的量)等等等等....

答案

将所有这些知识结合在一起,我们就得出了一个解决方案。

string text = document.getElementById("TextCollector").value;
var i;
var textnum;

//create empty string variable to append char values to
var myString = '';
for (i = 0; i < text.length; i++)
{
    //Convert char to number
    textnum = text.charCodeAt(i) - 96;

    //concatenate textnum to string, and add a comma at the end
    myString = myString + textnum + ",";
}

//remove the last unwanted comma by applying "substr" method to the string
myString = myString.substr(0,myString.length - 1);
document.getElementById("numbers").innerHTML = textnum;

我鼓励你从上面的解决方案中提出你不理解的问题。

**编辑:解决任何问题的策略是将其分解为子问题。您的目标是将字符串中的一堆字符转换为数字。问自己这些问题:

  1. 如何将字符转换为数字?

好吧,从你的代码来看,你似乎已经知道怎么做了。下一题

  1. 如何将所有字符都变成数字,而不仅仅是起始字符? 好的,仔细看看您应用于 "text" 值

    的方法

    charCodeAt(0)

零表示字符串的索引。字符串是一个 char 数组,如果您了解数组的工作原理,那么为什么它只有 returns 第一个字符就不足为奇了。

  1. 好的,我如何将这个 charCodeAt() 方法应用到 ALL 我的角色?

这有点棘手,因为如果您不知道编程(或递归)中循环的概念,您就没有足够的能力来解决这些问题。有许多免费的在线资源可用于学习循环等基本编程概念。我在这里推荐这个网站:https://www.w3schools.com/

  1. 好的,我可以将多个字符转换为数字。如何将它们粘合成一个字符串?

这是你可以做到的google。我就是这么做的。提示:如何将字符添加到字符串的末尾

  1. 如何删除字符串中的最后一个逗号?

Google: 如何删除字符串中的最后一个字符?

来源:

https://en.wikipedia.org/wiki/Control_flow#Loops

https://en.wikipedia.org/wiki/Primitive_data_type

https://www.w3schools.com/js/js_loop_for.asp

https://www.w3schools.com/js/js_string_methods.asp

https://codehandbook.org/remove-character-from-string/