我有以下字符串:
'(POINT (10 5),POINT EMPTY,LINESTRING (5 6, 15 17, 8 9),LINESTRING EMPTY,POLYGON ((55 1, 7 6, 90 99, 33 5, 55 1), (55 1, 7 6, 90 99, 33 5, 55 1)),POLYGON ((55 1, 7 6, 90 99, 33 5, 55 1)),POLYGON EMPTY,MULTIPOINT (55 1, 7 6, 90 99, 33 5, 55 1),MULTIPOINT EMPTY,MULTILINESTRING ((5 6, 15 17, 8 9), (5 6, 15 17, 8 9), (5 6, 15 17, 8 9)),MULTILINESTRING EMPTY,MULTIPOLYGON (((55 1, 7 6, 90 99, 33 5, 55 1)),, ((55 1, 7 6, 90 99, 33 5, 55 1), (55 1, 7 6, 90 99, 33 5, 55 1))),MULTIPOLYGON EMPTY)',
我想将其拆分为一个字符串数组,分隔符应为),[A-Z]
。 (所以),
后跟一个大写字母)
但我也不想丢失分隔符。
看完这个问题:JavaScript Split without losing character
我尝试过:
let string = '(POINT (10 5),POINT EMPTY,LINESTRING (5 6, 15 17, 8 9),LINESTRING EMPTY,POLYGON ((55 1, 7 6, 90 99, 33 5, 55 1), (55 1, 7 6, 90 99, 33 5, 55 1)),POLYGON ((55 1, 7 6, 90 99, 33 5, 55 1)),POLYGON EMPTY,MULTIPOINT (55 1, 7 6, 90 99, 33 5, 55 1),MULTIPOINT EMPTY,MULTILINESTRING ((5 6, 15 17, 8 9), (5 6, 15 17, 8 9), (5 6, 15 17, 8 9)),MULTILINESTRING EMPTY,MULTIPOLYGON (((55 1, 7 6, 90 99, 33 5, 55 1)),, ((55 1, 7 6, 90 99, 33 5, 55 1), (55 1, 7 6, 90 99, 33 5, 55 1))),MULTIPOLYGON EMPTY)'
let stringArray = string.split(/(?=\),[A-Z]\)/);
但这不起作用。我究竟做错了什么?是正则表达式吗?
所以期望的输出是:
['(POINT (10 5)',
'POINT EMPTY',
'POLYGON ((55 1, 7 6, 90 99, 33 5, 55 1), (55 1, 7 6, 90 99, 33 5, 55 1))',
'MULTIPOINT (55 1, 7 6, 90 99, 33 5, 55 1)',
'MULTIPOINT EMPTY',
...
]
最佳答案
解决该问题的方法之一是使用正向前瞻 ?=
和非捕获组 ?:
。
关于RegExp 。
let string = 'GEOMETRYCOLLECTION (POINT (10 5),POINT EMPTY,LINESTRING (5 6, 15 17, 8 9),LINESTRING EMPTY,POLYGON ((55 1, 7 6, 90 99, 33 5, 55 1), (55 1, 7 6, 90 99, 33 5, 55 1)),POLYGON ((55 1, 7 6, 90 99, 33 5, 55 1)),POLYGON EMPTY,MULTIPOINT (55 1, 7 6, 90 99, 33 5, 55 1),MULTIPOINT EMPTY,MULTILINESTRING ((5 6, 15 17, 8 9), (5 6, 15 17, 8 9), (5 6, 15 17, 8 9)),MULTILINESTRING EMPTY,MULTIPOLYGON (((55 1, 7 6, 90 99, 33 5, 55 1)),, ((55 1, 7 6, 90 99, 33 5, 55 1), (55 1, 7 6, 90 99, 33 5, 55 1))),MULTIPOLYGON EMPTY)'
let stringArray = string.split(/(?:\,)(?=[A-Z])/);
console.log(stringArray);
关于javascript - 带前瞻功能的 array.split,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42652605/