把字母改成用逗号隔开的数字?

Posted

技术标签:

【中文标题】把字母改成用逗号隔开的数字?【英文标题】:Change Letters into Numbers seperated by commas? 【发布时间】:2020-06-09 21:01:06 【问题描述】:

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

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

【问题讨论】:

看起来您需要将输入的字符串拆分为字符并处理每个字符的翻译。 您可以创建两个数组,一个用于数字,一个用于字母,然后每个空格将对应另一个数字,一旦您拥有要转换的任何字母/数字的索引,只需转到数组并获取(索引),除了数组从 0 开始,所以 a=0、b=1、c=2 等... 在提问之前你做了什么来帮助自己?您清楚地注意到它只转换第一个字母,仅此而已。您是否检查过您的代码并注意到您只使用了一次转换并且只将它用于第一个字母?如果你对这个过程稍加思考,你就可以自己解决问题。您注意到 97 将错误的结果减去 1。您是否尝试使用 96 看看是否有帮助? 糟糕,我没想到。 【参考方案1】:

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

循环

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

类型

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

text.charCodeAt(0) - 97;

运营商

你应该知道+、-、*、/,小学数学课是做什么的。您还应该知道 >(大于)、=(大于或等于)、

答案

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

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;

我鼓励您提出上述解决方案中您不理解的问题。

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

    如何将字符变成数字?

嗯,从您的代码看起来您​​已经知道如何操作了。下一个问题

    如何将所有字符都变成数字,而不仅仅是起始字符? 好的,仔细看看您应用于“文本”值的方法

    charCodeAt(0)

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

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

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

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

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

    如何去掉字符串中的最后一个逗号?

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/

【讨论】:

你开始描述 JavaScript 中不存在的各种类型(例如 char、float、double、integer;JavaScript 只有 StringNumber 用于这些类型,BigInt没有提到)。如果您只是坚持types in JavaScript,那就更好了。您似乎混合了其他语言(例如 C)的概念,这让刚开始学习的人感到困惑,尤其是当您没有明确说明哪些内容适用于哪种语言时。 感谢您的建议。事后看来,我只是漫无目的,但我会尽量不再犯同样的错误【参考方案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>

【讨论】:

等一下...我还需要脚本忽略字母大写的事实,所以不是让“A”变成“-31”,而是让“A”变成分为“1”和“a”。 然后先调用toLowerCase就可以了

以上是关于把字母改成用逗号隔开的数字?的主要内容,如果未能解决你的问题,请参考以下文章

excel中如何将两列数字并入一列,中间用逗号隔开?

excel中如何将两列数字并入一列,中间用逗号隔开?

Android SVG的pathData详解

把键盘的大写字母改成小写字母,小写字母改成大写字母,数字不做处理

使用SQL如何把用逗号等字符隔开的字符串转换成列表

织梦验证码中的字母全改成数字