javascript - 将字符串更改为数字并总结数字

标签 javascript regex

这是我的:

// My globals
var output = $("#output");

function m_o() {
  // var input = $("#input");
//   var value = input.val();
	var value = "SCORE";

  // Setting
  var r_o = {
    // Setting #customizing
    A:  "1",
    B:  "2",
    C:  "3",
    D:  "4",
    E:  "5",
    F:  "6",
    G:  "7",
    H:  "8",
    I:  "9",
    J: "10",
    K: "11",
    L: "12",
    M: "13",
    N: "14",
    O: "15",
    P: "16",
    Q: "17",
    R: "18",
    S: "19",
    T: "20",
    U: "21",
    V: "22",
    W: "23",
    X: "24",
    Y: "25",
    Z: "26",
  };

  // Translating
  var re = new RegExp(Object.keys(r_o).join("|"), "g");

  value = value.replace(re, function (matched) {
    return r_o[matched];
  });

  value = parseInt(value.split("").join(" + "), 10);

  output.val(value);
}
<!doctype html>
<html>
	<head>
		<title>5X Script</title>
	</head>
	<body>
		<!--<textarea id="input">
			
		</textarea>-->
		<input type="button" value="Translate" onclick="m_o()"/>
		<textarea id="output">
			
		</textarea>
	</body>
	<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.4/jquery.js"></script>
</html>

按下翻译按钮后,texarea 将显示1

这不是应该发生的事情。我们的输入SCORE,所以结果应该是“19+3+15+18+5”。换句话说,输出 应该等于 60

请你解释一下,我真的很难理解。

最佳答案

您可以避免存储 "letter":"number" 映射,利用 Ascii 值,只需转换大写并减去 64

function m_o() {
    var value ="SCORE";
    var finalCount = 0;
    for (var i = 0; i < value.length; i++) {
        finalCount += (value.toUpperCase().charCodeAt(i) - 64);
    }
    $("#output").html(finalCount);
}

点击 Fiddle Demo

关于javascript - 将字符串更改为数字并总结数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31372109/

相关文章:

从文件调用 Javascript 函数

javascript - 在 flot.js 中为 JSON 数据绘制折线图和条形图

javascript - 如果 <li> 包含特定文本,则返回 false

不包含字符串的所有字符串的正则表达式?

javascript - Angularjs 并使用包含 __proto__ 的数组进行选择

javascript - css 缩放的谷歌地图点击不正确的坐标

python - 需要 REGEX 帮助返回关键字之间的多行

javascript - 正则表达式仅在 Javascript 中没有跟随或以字母开头时才匹配数字

javascript - 正则表达式不匹配标签与属性?

正则表达式 - 字符串包含 6 位数字