-1

我正在尝试创建一个按钮,将“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”。

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

4

2 回答 2

2

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

于 2020-02-26T03:28:00.683 回答
1

请允许我向您介绍一些我强烈建议您学习的概念,而不是复制粘贴给您的任何代码。我不会详细介绍,因为老实说,你所需要知道的就是如何在谷歌搜索栏上提出正确的问题以获得答案。我还将讨论如何制定解决问题的策略,例如在文章末尾的问题。

循环

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

类型

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

text.charCodeAt(0) - 97;

运营商

你应该知道什么+、-、*、/,做小学数学课。您还应该知道 >(大于)、<(小于)、>=(大于或等于)、<=(小于或等于)、==(等于)、!=(不等于)、&&(交集) , 也称为 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. 如何将所有字符变成数字,而不仅仅是起始字符?好的,仔细看看您应用于“文本”值的方法

    charCodeAt(0)

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

  1. 好的,我如何将此 charCodeAt() 方法应用于我的所有角色?

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

  1. 好的,我可以将多个字符转换为数字。如何将它们粘在一起成一根绳子?

这是你可以谷歌的东西。这就是我所做的。提示:如何在字符串末尾添加字符

  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/

于 2020-02-26T05:03:52.947 回答