我有多个文本文件,我想处理,并获得版本号的'香蕉'包部分,这里有一个例子:
Package: apple
Settings: scim
Architecture: amd32
Size: 2312312312
Package: banana
Architecture: xsl64
Version: 94.3223.2
Size: 23232
Package: orange
Architecture: bbl64
Version: 14.3223.2
Description: Something descrip
more description to orange
Package: friday
SHA215: d3d223d3f2ddf2323d3
Person: XCXCS
Size: 2312312312
字符串
我所知道的:
- Package:[name]始终是节中的第一行。
- 并非所有部分都有Package:[name]行。
- Package:banana部分总是有一个Version:行。
- 版本:行顺序不同。(可以是第二行、第五行、最后一行..)
- 包:香蕉节的顺序是不同的。它可以在文件的开始,中间,结尾。
- 版本:[编号]总是不同
我想找到香蕉包部分的版本号,所以从例子中94.3223.2。我不想通过硬编码循环逐行找到它,但用一个很好的解决方案来做。
我尝试过这样的方法,但不幸的是,它并不适用于所有场景:
firstOperation = textFile.split('Package: banana').pop();
secondOperation = firstOperation.split('\n');
finalString = secondOperation[1].split('Version: ').pop();
型
我的逻辑是:
1.查找软件包:banana line
1.在找到包香蕉行后,检查第一次出现的“Version:”,然后从此行中提取版本号。
这个数据处理将是一个nodeJs端点。
3条答案
按热度按时间bqf10yzr1#
为了使其更具可扩展性,您可以将其转换为对象:
字符串
vh0rcniy2#
这些类型的文本提取总是非常脆弱的,所以让我知道这是否适用于您的实际输入.无论如何,如果我们用空行分割(实际上只是双换行符,
\n\n
),然后用\n
分割每个“段落”,我们可以使用的行块。然后我们可以找到包含banana包的块,然后在该块中,我们找到包含版本的行。
最后,我们切掉
Version:
以获得版本文本。字符串
8xiog9wr3#
字符串