javascript - 将字符串转换为数组后,我得到错误的数组长度

标签 javascript regex arrays

在我的浏览器console.log(来自服务器的socket.io应答的结果)中,我有这个字符串需要在数组中进行转换:

'test.tif[0] TIFF 1962x2668+0+0 DirectClass 1-bit 12.8M 0.000u 0:01
 test.tif[1] TIFF 1952x2688+0+0 DirectClass 1-bit 12.8M 0.000u 0:01
 test.tif[2] TIFF 1650x2200+0+0 DirectClass 1-bit 12.8M 0.000u 0:01
 test.tif[3] TIFF 1654x2204+0+0 DirectClass 1-bit 12.8M 0.000u 0:01
 test.tif[4] TIFF 1654x2206+0+0 DirectClass 1-bit 12.8M 0.000u 0:01
 test.tif[5] TIFF 1654x2206+0+0 DirectClass 1-bit 12.8M 0.000u 0:01

                                                                    '

之后data.split(/(\r\n|\n|\r)/gm);

console.log 向我展示了这一点:

 test.tif[0] TIFF 1962x2668+0+0 DirectClass 1-bit 12.8M 0.000u 0:01,
,test.tif[1] TIFF 1952x2688+0+0 DirectClass 1-bit 12.8M 0.000u 0:01,
,test.tif[2] TIFF 1650x2200+0+0 DirectClass 1-bit 12.8M 0.000u 0:01,
,test.tif[3] TIFF 1654x2204+0+0 DirectClass 1-bit 12.8M 0.000u 0:01,
,test.tif[4] TIFF 1654x2206+0+0 DirectClass 1-bit 12.8M 0.000u 0:01,
,test.tif[5] TIFF 1654x2206+0+0 DirectClass 1-bit 12.8M 0.000u 0:01,
, 

......多了一个逗号。

当我执行data.length时,我得到的结果是99。 这怎么可能?获得正确值的最佳解决方案是什么?

最佳答案

  1. 通过在 JavaScript 中使用组,您可以将匹配的组作为项目包含在拆分结果中。因此,如果您使用像 (,) 这样的正则表达式来拆分 A,B,结果将是 [0] = 'A', [1] = ' ,', [2] = 'B'
  2. 您可以使用前视功能来确保每个元素后面都有文本,这样就不会包含任何空白元素。

正则表达式

(?:[\r\n]+\s*)+(?=\w)

REY

上述正则表达式的优点是可以 trim 任何额外的空格,这在您的情况下可能有点过分了。另外 [\r\n]+ 可能被认为比 \r\n|\n|\r 更有效,因为它也会捕获多个连续的中断行作为最初的预期匹配。

关于javascript - 将字符串转换为数组后,我得到错误的数组长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22438329/

相关文章:

javascript - 内容的淡入淡出过渡

regex - 迭代正则表达式捕获的生命周期问题

javascript - 如何将对象中的字符串值转换为数字?

c++ - 如何查找字符串是否与数组中找到的字符串匹配?

python - 使用正则表达式从字符串列表中提取特定信息

javascript - 未定义的数组元素

javascript - backbone.js - 以 RESTful 方式处理模型关系

javascript - 跨多个html的通用js文件和全局变量引用

javascript - 初始计数器值未显示在 ChangeDetectionPush 策略上

java - 正则表达式模式匹配特定的数字模式,如果有不同的模式则跳过