说我有这样的输入
A5]-A4]-A3]-A2]-A1]-A0]
或者像这样
I=A4]-A5]pABSI)<=((A0]-A1])^2+(A2]-A3])^2)^0.5<=I}
我正在尝试将A<number>]
的所有遮挡替换为A[<number>]
,其中任何介于0和Integer.MAX
之间的任何值,因此所需的输出将如下所示
A[5]-A[4]-A[3]-A[2]-A[1]-A[0]
和
I=A[4]-A[5]pABSI)<=((A[0]-A[1])^2+(A[2]-A[3])^2)^0.5<=I}
但由于某种原因,输出看起来像这样:
A[5]-A[[4]-A[3]-A[2]-A[1]-A0]
和
I=A[4]-A[5]pABSI)<=((A[0]-A[1])^2+(A[[2]-A3])^2)^0.5<=I}
到目前为止的代码:
private String finalPrg = "";
private int MAIN_LOOP = 0;
private void eval(String s) {
while (MAIN_LOOP < s.length()) {
// more cases here, irrelevant
switch (s.charAt(MAIN_LOOP)) {
evalArrayGetter(finalPrg, MAIN_LOOP);
break;
default:
finalPrg += s.charAt(MAIN_LOOP);
break;
}
MAIN_LOOP++;
}
}
private void evalArrayGetter(String s, int p) {
int i;
for (i = p-1; i > 0; i--) {
if (s.charAt(i)=='A') {
break;
}
}
finalPrg =s.substring(0,i+1) + "[" +s.substring(i+1)+"]";
}
由于某种原因,没有正确放置一对支架,我不知道如何修理它。
答案 0 :(得分:2)
这是一个使用正则表达式的解决方案:
String result = yourString.replaceAll("A(\\d+])", "A[$1");
说明:
A(\d+])
匹配A
后跟一系列数字,然后匹配]
。它捕获一系列数字并将]
捕获到组1中。replaceAll
将该模式中与第二个参数A[$1
匹配的所有内容替换为该模式。在这里,$1
表示第1组。因此它替换为A[
,后跟第1组中捕获的内容。
答案 1 :(得分:1)
String result = s.replaceAll("A(\\d+)\\]", "A[$1]");