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 = ");