我有一个文本文件,每一行都是一个字符串。
最极端的情况可能是这样的:
A01B01C01D100E500F100.00G100.00H100.00
有关可能性的一些信息:
- 每个字符串将至少包含其中一个字母和一个数字
- 字母后面的数字可以是小数点后任意位数和位数。
- 字母并不总是按顺序排列
另一个数据示例:
A01B400C62.578D77.297
C62.409D77.222
C62.259D77.113
C62.135D76.975
C62.042D76.815
C61.985D76.638
C61.973D76.529
A03B10000
A0C62.760 D77.336
A0E3.000
A01F400E0
A01B400E-0.100
我想要做的是在每个字母处拆分字符串,并获取下一个字母之前的所有数字。结果如下:
A01, B01, C01, D100, E500, F100.00, G100.00, H100.00
我尝试了很多东西,最接近的是这个
dicedLine = myLine.split(/[ABCDEFGH]/)
这让我接近我想要的,除了我发现如果你有一个字符串在搜索中不包含这些字母之一,那么结果不是我想要的。
例如这样的一行:
A30
会给我这样的结果:
["", "30"]
我真正想要这样的结果:
["A30", "", "", "", "", "", "", ""]
任何想法都值得赞赏!
最佳答案
您可以使用positive lookahead断言特定字符存在,但不实际使用它:
codes = [
"A01B400C62.578D77.297",
"C62.409D77.222",
"C62.259D77.113",
"C62.135D76.975",
"C62.042D76.815",
"C61.985D76.638",
"C61.973D76.529",
"A03B10000",
"A0C62.760 D77.336",
"A0E3.000",
"A01F400E0",
"A01B400E-0.100",
];
console.log(codes.map(code => code.split(/ *(?=[A-Z])/)));
注意,我还添加了 *
来删除空格(如果有)。
关于javascript - 如何在javascript中多次分割字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44170535/