比方說,我有一個像方程的String表示 -更換底片正片,反之亦然在String
(1-2 3)V(-1 3 2)V(-5 1 4 )v(-4 -2 -3)v(-3 4 5)v(1-25)v(3 -2 5)v(2 3 -4)
我有一種方法需要修改字符串,要替換的數字變量以及應將其設置爲的狀態爲
public String changedString(String original, int num, boolean state) {
}
其中用於呼叫作爲
changedString(original, 2, false);
應返回以下字符串
(1 2 3)V(-1 3 -2)V(-5 1 4)V(-4 2 - 3)v(-3 4 5)v(1 2 5)v(3 2 5)v(-2 3 -4)
請注意,所有2的否定實例(負2s)正實例,而2(正2s)的正實例已被更改爲負實例。
爲了解決這個問題,我最初嘗試String.replaceAll()
這顯然不會工作。另一種方法我試過了 -
public String changedString (String original,int num, boolean state){
String temp = original;
if (!state) {
StringBuilder sb = new StringBuilder(temp);
//Following code changes negative instances to positives
String from = "-" + num;
String to = "" + num;
int index = sb.indexOf("-" + num);
while (index != -1) {
sb.replace(index, index + from.length(), to);
index += to.length();
index = sb.indexOf(from, index);
}
//Following code changes positive instances to negatives
from = "" + num;
to = "-" + num;
index = sb.indexOf("-" + num);
while (index != -1) {
sb.replace(index, index + from.length(), to);
index += to.length();
index = sb.indexOf(from, index);
}
temp = sb.toString();
}
return temp;
}
然而,這種替代方法再次問題是,它總是給定數轉換爲負數。我怎樣才能更輕鬆,更高效地完成工作?
(這是我的方法來嘗試布爾可滿足性問題的一個元素)
難道你不能使用replaceAll,並用'num'替換'「 - 」+ num'? – Tyler