gpt4 book ai didi

java - 我如何计算这些值?

转载 作者:行者123 更新时间:2023-11-30 04:56:48 25 4
gpt4 key购买 nike

我有一个数据库,通常会生成一个3000行的文件,实际上我想计算LAYERID的数量

我的数据库文件是这样的:

CREATE TRMD=GFT,LAYID=LY_00,USFGN=DISABLED;
CREATE BUTYP=ACB8T,RAAT=FALSE,GBPATH=AAP4,GTXT=12;
CREATE TRMD=GFT,LAYID=LY_00,USFGN=DISABLED;
CREATE TRMD=GFT,LAYID=LY_01,USFGN=DISABLED;
CREATE TRMD=GFT,LAYID=LY_01,USFGN=DISABLED;
CREATE TRMD=GFT,LAYID=LY_02,USFGN=DISABLED;
CREATE BUTYP=ACB9T,RAAT=TRUE,GBPATH=AAP4,GTXT=32;
CREATE TRMD=GFT,LAYID=LY_00,USFGN=DISABLED;
CREATE TRMD=GFT,LAYID=LY_01,USFGN=DISABLED;
CREATE TRMD=GFT,LAYID=LY_02,USFGN=DISABLED;
CREATE TRMD=GFT,LAYID=LY_03,USFGN=DISABLED;
CREATE TRMD=GFT,LAYID=LY_03,USFGN=DISABLED;
CREATE BUTYP=ACB2T,RAAT=TRUE,GBPATH=AAP4,GTXT=1;
CREATE TRMD=GFT,LAYID=LY_00,USFGN=DISABLED;
CREATE BUTYP=ACB8T,RAAT=FALSE,GBPATH=AAP4,GTXT=2;
CREATE TRMD=GFT,LAYID=LY_00,USFGN=DISABLED;
CREATE BUTYP=ACB8T,RAAT=TRUE,GBPATH=AAP4,GTXT=3;

如果我们只有“LAYID=LY_00”(如第一行),我们必须忽略它,但如果在“LAYID=LY_00”下是“LAYID=LY_01 and ...”(如第三行)我们必须计算“LAYID=LY_00”和其他layerid,例如在第3行到第6行我们有4个Layeids

LAYID=LY_00
LAYID=LY_01
LAYID=LY_01
LAYID=LY_02

所以计数是 4,如果我们想全部计数,我们有 9,正如我之前所说,如果我们只有

LAYID=LY_00 类似的第 1 行我们忽略它。

我还编写了这个方法来逐行读取:

public void execToken(File f) throws Exception {
BufferedReader br = new BufferedReader(new FileReader(f));
String line;
while ((line = br.readLine()) != null) {
StringTokenizer strt = new StringTokenizer(line, ";");
while (strt.hasMoreTokens()) {
String token = strt.nextToken();
layerSupport(token);
}
}
}

而且,我知道下面的方法还不真实和完整,但它可能对您有用

public void layerSupport(String token){
if(token.startsWith("CREATE TRMD") && !token.contains("LAYID=LY_00"))
System.out.println(token) ;

}

非常感谢您的帮助...

最佳答案

public int execToken(File f) throws Exception
{
BufferedReader br = new BufferedReader(new FileReader(f));
String line;
int count = 0;
Pattern layID = Pattern.compile("LAYID=LY_\\d+");
Matcher matcher = null;
boolean isSingle = true;
while ((line = br.readLine()) != null)
{
if(line.contains("LAYID=LY_00"))
{
isSingle = false;
continue;
}
matcher = layID.matcher(line);
if(matcher.find())
{
count++;
if(!isSingle)
count++;
}

isSingle = true;
}
return count;
}

试试这个。它会记住上一行是否包含 LAYID=LY_00并在下一次迭代中将计数增加两次,如果 LAYID=LY_<digits>已找到且 isSingle 为 false。

关于java - 我如何计算这些值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8284710/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com