RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题 / 703133
Accepted
Nikolay
Nikolay
Asked:2020-08-08 04:14:41 +0000 UTC2020-08-08 04:14:41 +0000 UTC 2020-08-08 04:14:41 +0000 UTC

js中将字母改成数字

  • 772

我需要根据数组中的模式更改字符串中的所有字母。开始但无法继续。有一个想法是通过蛮力获取所有的信件,但工作速度将有很多不足之处。在这段代码中,我在数组中创建了一个变量,它将被写入新行:

array.forEach(function(item, i, arr) {
        arr[i]["__TMP__"] =
            stringTable.indexOf( item["name"].toString().charAt(0).toUpperCase() );
    });

有什么办法可以做到这一点replace吗?

模板数组:

stringTable: string[] = [
    "A",
    "B",
    "C",
    "D",
    "E",
    "F",
    "G",
    "H",
    "I",
    "J",
    "K",
    "L",
    "M",
    "N",
    "O",
    "P",
    "Q",
    "R",
    "S",
    "T",
    "U",
    "V",
    "W",
    "X",
    "Y",
    "Z"
];

输入字符串:Tim 输出字符串:019008012(019-t, 008-i, 012-m)

javascript
  • 4 4 个回答
  • 10 Views

4 个回答

  • Voted
  1. Best Answer
    Grundy
    2020-08-08T15:29:29Z2020-08-08T15:29:29Z

    最好使用对象而不是数组,在这种情况下,不需要搜索,例如

    {
      "A": "000",
      "B": "001",
      "C": "002",
      "D": "003",
      "E": "004",
      "F": "005",
      "G": "006",
      "H": "007",
      "I": "008",
      "J": "009",
      "K": "010",
      "L": "011",
      "M": "012",
      "N": "013",
      "O": "014",
      "P": "015",
      "Q": "016",
      "R": "017",
      "S": "018",
      "T": "019",
      "U": "020",
      "V": "021",
      "W": "022",
      "X": "023",
      "Y": "024",
      "Z": "025"
    }
    

    获取要替换的所需字符串将归结为简单地获取属性:

    symbolsMap[char.toUpperCase()];
    

    此代码可用于传递给方法的函数replace

    var symbolsMap = {
      "A": "000",
      "B": "001",
      "C": "002",
      "D": "003",
      "E": "004",
      "F": "005",
      "G": "006",
      "H": "007",
      "I": "008",
      "J": "009",
      "K": "010",
      "L": "011",
      "M": "012",
      "N": "013",
      "O": "014",
      "P": "015",
      "Q": "016",
      "R": "017",
      "S": "018",
      "T": "019",
      "U": "020",
      "V": "021",
      "W": "022",
      "X": "023",
      "Y": "024",
      "Z": "025",
      
      "Р": "-11",
      "Ы": "-21",
      "К": "-31"
    }
    
    var str = "Tim";
    var numbers = str.replace(/./gi,$0=>symbolsMap[$0.toUpperCase()]||$0);
    console.log(numbers);
    
    var str = "рык";
    var numbers = str.replace(/./gi,$0=>symbolsMap[$0.toUpperCase()]||$0);
    console.log(numbers);

    • 3
  2. Nazar Kalytiuk
    2020-08-08T04:43:21Z2020-08-08T04:43:21Z

    如果你正确理解了这个问题,你可以试试这个。

    function pad(num, size) {
        var s = num+"";
        while (s.length < size) s = "0" + s;
        return s;
    }
    
    let input = 'Tim'
    let inputLower = input.toLowerCase();
    let output = '';
    for (let i = 0; i < inputLower.length; i++) {
        output += pad(inputLower[i].charCodeAt(0) - 97, 3);
    }
    console.log(output);

    • 1
  3. Daniil Dubchenko
    2020-08-08T05:19:25Z2020-08-08T05:19:25Z

    这是出来的代码,我们使用的不是数组,而是 charAt + 如果用户输入非英文字母,我们会捕获错误。

    document.querySelector("button").onclick = function() {
      var inputText = (document.querySelector(".text-in").value).toLowerCase();
      var outText = "";
      if (inputText != "") {
        inputText = inputText.split('');
        for (var i = 0, inputTextL = inputText.length; i < inputTextL; i++) {
          var num = (inputText[i].charCodeAt(0)) - 96;
          if (num < 1 || num > 26) {
            document.querySelector(".text-in").value = "English word, please!";
            return;
          }
          if (num < 9) {
            outText = outText + "00" + num;
          } else {
            outText = outText + "0" + num;
          }
        }
        document.querySelector(".text-in").value = outText;
      }
    }
    <input type="text" class="text-in">
    <button>Зашифровать</button>

    • 1
  4. Alexander Bragin
    2020-08-08T17:01:41Z2020-08-08T17:01:41Z

    String.prototype.replaceAll = function(replacement) {
      var _this = this;
    
      replacement.forEach(function(element, index) {
        var re = new RegExp(element, "gi");
    
        _this = _this.replace(re, "000".substring(0, "000".length - index.toString().length) + index.toString());
      });
    
      return _this;
    };
    
    var originalString = "Hello Привет 007!!!";
    var newString = originalString.replaceAll(['h', 'e', 'l', 'п', 'р', 'и', '!', 'в', 'е', 'т', 'o']);
    
    console.log(originalString + " -> " + newString);


    对于此代码,重要的是要替换的字符['h', 'e', 'l', 'п', 'р', 'и', '!', 'в', 'е', 'т', 'o']中没有数字。如果有数字,请在所有条件下更详细地写出问题。决定将取决于此。

    PS:如果有数字:可以先用正则表达式替换数字,再替换其余字符。因为如果我们先替换字符串中的字符,然后开始替换数字,就好像字符串中会出现更多的数字......

    • 1

相关问题

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    Python 3.6 - 安装 MySQL (Windows)

    • 1 个回答
  • Marko Smith

    C++ 编写程序“计算单个岛屿”。填充一个二维数组 12x12 0 和 1

    • 2 个回答
  • Marko Smith

    返回指针的函数

    • 1 个回答
  • Marko Smith

    我使用 django 管理面板添加图像,但它没有显示

    • 1 个回答
  • Marko Smith

    这些条目是什么意思,它们的完整等效项是什么样的

    • 2 个回答
  • Marko Smith

    浏览器仍然缓存文件数据

    • 1 个回答
  • Marko Smith

    在 Excel VBA 中激活工作表的问题

    • 3 个回答
  • Marko Smith

    为什么内置类型中包含复数而小数不包含?

    • 2 个回答
  • Marko Smith

    获得唯一途径

    • 3 个回答
  • Marko Smith

    告诉我一个像幻灯片一样创建滚动的库

    • 1 个回答
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Алексей Шиманский 如何以及通过什么方式来查找 Javascript 代码中的错误? 2020-08-03 00:21:37 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    user207618 Codegolf——组合选择算法的实现 2020-10-23 18:46:29 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5