假设我有一个像 the one from Oracle’s example 这样的枚举类:
public enum Planet {
MERCURY (3.303e+23, 2.4397e6),
VENUS (4.869e+24, 6.0518e6),
EARTH (5.976e+24, 6.37814e6),
MARS (6.421e+23, 3.3972e6),
JUPITER (1.9e+27, 7.1492e7),
SATURN (5.688e+26, 6.0268e7),
URANUS (8.686e+25, 2.5559e7),
NEPTUNE (1.024e+26, 2.4746e7);
private final double mass; // in kilograms
private final double radius; // in meters
Planet(double mass, double radius) {
this.mass = mass;
this.radius = radius;
}
private double mass() { return mass; }
private double radius() { return radius; }
// universal gravitational constant (m3 kg-1 s-2)
public static final double G = 6.67300E-11;
double surfaceGravity() {
return G * mass / (radius * radius);
}
double surfaceWeight(double otherMass) {
return otherMass * surfaceGravity();
}
//...
我需要将类中的所有数字乘以 0.33。我不想在枚举中编写计算代码,而是想更改文本本身。在 Vim/IDEA/任何其他工具中实现自动化的最快方法是什么?
最佳答案
使用 vim,我会尝试以下操作:
:% s /\(\d\+\.\d\+\)/\=(submatch(1) * 0.33)/gc
这将匹配整个文件 (%) 中的每个数字 (\d+.\d+),并将其替换为 (*) 匹配数字 (submatch(1)) 乘以 (*) 的结果 (\=) 0.33。
关于vim - 如何自动计算和更改文本文件(Java 类)中的数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19367437/