【问题标题】:How to split string into up to 2000 characters each at end of line?如何在行尾将字符串拆分为最多 2000 个字符?
【发布时间】:2017-09-19 17:06:24
【问题描述】:

下面是一个名为 results 的字符串变量的小样本 ...

2017-09-18  920.0100  922.0800  910.5999  915.0000  1294800
2017-09-15  924.6599  926.4899  916.3599  920.2899  2505400
2017-09-14  931.2500  932.7700  924.0000  925.1099  1397600
2017-09-13  930.6599  937.2500  929.8599  935.0900  1102600
2017-09-12  932.5900  933.4799  923.8610  932.0700  1134400
2017-09-11  934.2500  938.3800  926.9199  929.0800  1267000
2017-09-08  936.4899  936.9899  924.8800  926.5000  995100
2017-09-07  931.7299  936.4099  923.6199  935.9500  1212700

如何将其拆分为一个数组,每个部分包含尽可能接近 2000 个字符并在行尾结束。一直在使用以下,但这会在行的中间结束数组中的每个项目。

var parts = results.match(/[\s\S]{1,2000}/g);

【问题讨论】:

    标签: javascript arrays regex match


    【解决方案1】:

    为确保您在每场比赛中获得最多 2000 个字符,您可以使用

    var parts = results.match(/[\s\S]{1,2000}$/gm);
    

    详情

    • [\s\S]{1,2000} - 1 到 2000 个字符,尽可能多,
    • $ - 行尾
    • /gm - 启用多次匹配 (g) 并强制 $ 匹配行尾 (m)。

    【讨论】:

    • 谢谢,工作正常,您的代码与 ctwheels 发布的代码之间的主要区别是什么?
    • 否 \v(JS 正则表达式引擎不支持)。另外,我解释了为什么m 很重要——它使$ 锚匹配行 的结尾,而不是整个字符串。
    【解决方案2】:

    代码

    See this code in use here

    [\s\S]{1,200}(?:\v|$)
    

    说明

    • 匹配任意字符 1 到 200 次
    • 匹配垂直空白字符\v或字符串/文件结尾$

    显然,在您的情况下,您将使用 2000 而不是 200。

    【讨论】:

    • 如果我在您的链接中将风格更改为 Javascript,这就是我正在使用的,它不会在行尾拆分。
    • 你在使用m标志吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-30
    • 2011-11-02
    • 1970-01-01
    • 2018-04-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多