搜索加载的文件



Generaly我有应用程序窗口,在那里我可以选择要加载的文件。接下来,我想对加载的数据进行一些操作。我在加载的文件中"搜索"有问题。这就是我加载文本文件的方式。

String content = new String(Files.readAllBytes(path), charset);

我想在我加载的文件行中用"Y"号进行更改。如果有"Y=2",我希望有"Y=-2"。问题是"-"并不总是在同一个地方。

我已经尝试替换字符串使用:

if(content.contains("Y") && content.contains("-")) {
content = content.replace("Y =     -","Y =      " );
content = content.replace("Y =    -","Y =     " );
content = content.replace("Y =   -","Y =    " );
content = content.replace("Y =  -","Y =   " );
content = content.replace("Y = -","Y =  " );                                    
}

但它只有一种工作方式——当我的文件中只有"-"时。文件如下:

P[1]{
GP1:
UF : 2, UT : 7,     CONFIG : 'N U T, 0, 0, 0',
X =  4007.202  mm,  Y = -2356.597  mm,  Z = -1130.101  mm,
W =   165.198 deg,  P =    30.150 deg,  R =   -47.243 deg
};
P[2]{
GP1:
UF : 2, UT : 7,     CONFIG : 'N U T, 0, 0, 0',
X =  3249.045  mm,  Y = 3095.068  mm,   Z =   642.444  mm,
W =    63.553 deg,  P =    -5.645 deg,  R =  -130.279 deg
};     
P[5]{
GP1:
UF : 2, UT : 7,     CONFIG : 'N U T, 0, 0, 0',
X =  1830.140  mm,  Y =  -879.342  mm,  Z =   577.282  mm,
W =   102.636 deg,  P =     3.797 deg,  R =  -178.377 deg
};
P[6]{
GP1:
UF : 2, UT : 7,     CONFIG : 'N U T, 0, 0, 0',
X =  1805.656  mm,  Y =   788.587  mm,  Z =   570.342  mm,
W =    90.000 deg,  P =     0.000 deg,  R =  -179.762 deg
};
P[7]{
GP1:
UF : 2, UT : 7,     CONFIG : 'N U T, 0, 0, 0',
X =  1808.476  mm,  Y =  -723.783  mm,  Z =   571.716  mm,
W =    90.000 deg,  P =     -.000 deg,  R =  -179.762 deg
};
P[8]{
GP1:
UF : 2, UT : 7,     CONFIG : 'N U T, 0, 0, 0',
X =  1808.988  mm,  Y =   776.000  mm,  Z =   571.501  mm,
W =    90.000 deg,  P =     0.000 deg,  R =   180.000 deg
};
P[9]{
GP1:
UF : 2, UT : 7,     CONFIG : 'N U T, 0, 0, 0',
X =  1808.984  mm,  Y =    -1.200  mm,  Z =   571.509  mm,
W =    90.000 deg,  P =     0.000 deg,  R =   180.000 deg
};
P[10]{
GP1:
UF : 2, UT : 7,     CONFIG : 'N U T, 0, 0, 0',
X =  2283.352  mm,  Y =     8.892  mm,  Z =   613.716  mm,
W =    89.709 deg,  P =    -2.407 deg,  R =  -166.205 deg
};
P[11]{
GP1:
UF : 2, UT : 7,     CONFIG : 'N U T, 0, 0, 0',
X =  3124.694  mm,  Y =     -.544  mm,  Z =   501.109  mm,
W =    69.303 deg,  P =    16.675 deg,  R =  -136.733 deg
};
P[12]{
GP1:
UF : 2, UT : 7,     CONFIG : 'N U T, 0, 0, 0',
X =  1884.062  mm,  Y =      .584  mm,  Z =   609.822  mm,
W =    96.232 deg,  P =     8.892 deg,  R =  -166.064 deg
};

如果我理解正确,您希望否定所有Y的值。例如:

  • Y = -2356.597应变为Y = 2356.597
  • Y = 3095.068应变为Y = -3095.068

如果是,您可以应用以下模式替换:

  • 将后面跟有空格的Y =替换为自身和附加的-
  • 将后面跟着空格的Y =和删除了自身和----替换为

像这样:

input.replaceAll("(Y = +)", "$1-").replaceAll("(Y = +)--", "$1"));

replace()仅将更改应用于它找到的给定正则表达式的第一次出现。

我建议使用replaceAll()方法来替换字符串中的所有出现。

此外,您还可以修改正则表达式,这样无论"Y"、"="one_answers"-"之间有多少空格,您都只需要一次方法调用,如下所示:

content.replaceAll("Y( )*=( )*-","Y = ");

最新更新