【问题标题】:Javascript slice a string into a chunks of specified length stored in variableJavascript将字符串切成指定长度的块存储在变量中
【发布时间】:2018-12-11 21:38:48
【问题描述】:

我想将一个 javascript 字符串分割成一个指定长度的字符串数组(长度可以变化),所以我想将长度参数作为一个单独的变量:

var length = 3;
var string = 'aaabbbcccddd';
var myArray = string.match(/(.{3})/g);

如何在比赛中使用长度变量? 或任何其他类似于 PHP 中的 str_split 的解决方案。

我的问题不是重复的: Split large string in n-size chunks in JavaScript 因为我知道如何切片,但问题是如何在匹配中使用变量。

我做不到Javascript Regex: How to put a variable inside a regular expression?

【问题讨论】:

  • 仅供参考,您不需要正则表达式中的()
  • 您也可以使用调用string.substr() 的循环而不是正则表达式。
  • 你有这个问题的答案吗?我有解决办法。

标签: javascript arrays regex


【解决方案1】:

如果您总是需要拆分,那么string.substr() 是一个更好的选择 仅长度。

但是,如果您想知道如何使用正则表达式来做到这一点,您可以通过以下方式在您的 RegExp 中添加变量。

var length = 3;
let reg = new RegExp(`(.{${length}})`, 'g')
var string = 'aaabbbcccddd';
var myArray = string.match(reg);
console.log(myArray);

【讨论】:

    【解决方案2】:

    我不知道你是否解决了这个问题:

    昨天我已经处理了你的问题,但由于问题被搁置或标记为重复的原因,我无法回答,后来我得到了解决这个问题。如果您还没有修复它,希望它对您有所帮助。

    我用的是new RegExp(),请看小提琴:

    var length = 3;
    var string = 'aaabbbcccddd';
    dynamicRegExp =new RegExp("(.{"+length+"})", "g");
    console.log("Regex used: "+ dynamicRegExp);
    var myArray = string.match(dynamicRegExp);
    console.log("Output: "+ myArray);

    语法

    new RegExp(pattern[, flags])
    RegExp(pattern[, flags])
    

    参数

    • 模式

    正则表达式的文本,或者从 ES5 开始,要复制的另一个 RegExp 对象(或文字)(后者仅用于两个 RegExp 构造函数符号)。

    • 标志

    如果指定,flags 表示要添加的标志,或者如果为模式提供了一个对象,则标志值将替换该对象的任何标志(并且 lastIndex 将重置为 0)(从 ES2015 开始)。如果未指定 flags 并且提供了正则表达式对象,则该对象的标志(和 lastIndex 值)将被复制。

    @Code Maniac 也正确或与此相同。

    【讨论】:

      猜你喜欢
      • 2017-09-27
      • 2013-11-04
      • 1970-01-01
      • 1970-01-01
      • 2021-01-20
      • 1970-01-01
      • 1970-01-01
      • 2010-10-19
      • 1970-01-01
      相关资源
      最近更新 更多