【问题标题】:Splitting a multiline string every n characters [duplicate]每n个字符拆分一个多行字符串[重复]
【发布时间】:2020-12-17 14:38:07
【问题描述】:

如何创建一个函数,每隔 n 个字符拆分一个多行字符串。我有以下函数,但它不能与多行字符串一起正常工作。

splitIntoChunks("abab", 2) 工作正常并给出 ["ab", "ab"]

但是,这不能正常工作:

var str = `aaa
bbb
ccc
ddd`

splitIntoChunks(str, 2)

这会返回 ["aa", "a", "bb", "b", "cc", "c", "dd", "d"]

而我需要的是:

["aa" ["a\n", "bb", "b\n", "cc", "c\n", "dd", "d\n"]]

需要保留\n

function splitIntoChunks(str, size) {
  return str.match(new RegExp('.{1,' + size + '}', 'g'));
}

【问题讨论】:

    标签: javascript regex string split


    【解决方案1】:

    . 默认不匹配换行符。您可以通过添加s flag

    function splitIntoChunks(str, size) {
      return str.match(new RegExp('.{1,' + size + '}', 'gs'));
    }
    
    
    var str = `aaa
    bbb
    ccc
    ddd`
    
    console.log(splitIntoChunks(str, 2));

    【讨论】:

    • 谢谢,这解决了我的问题。当堆栈溢出允许我时将标记为答案:)
    • 如果可能的话,你能解释一下s和m标志之间的区别吗?
    • s 导致 . 匹配换行符。 m 使 ^$ 匹配一行的开头和结尾,而不是整个字符串的开头和结尾。例如。使用 foo\nbar/^foo$/m 会匹配,但 /^foo$/ 不会匹配(因为 $ 匹配整个字符串的结尾)。
    猜你喜欢
    • 1970-01-01
    • 2019-11-01
    • 1970-01-01
    • 2012-03-17
    • 1970-01-01
    • 2022-01-15
    相关资源
    最近更新 更多