我怎麼能讀一個字符串(如下圖),更換`%rackname`或`用新的文本%sysname`Java的掃描儀讀取特殊格式的線
KW Actual `%rackname` -> KW Actual THE RACK NAME
KW Difference `%rackname`-> KW Actual THE RACK NAME
KW Predicted `%rackname` -> KW Actual THE RACK NAME
Loads Capacity `%sysname` -> Loads Capacity SYS NAME
Loads Cost Difference `%sysname` -> Loads Cost Difference SYS NAME
Loads EEPR `%sysname` -> Loads EEPR SYS NAME
我需要這個格式中適用於所有字符串一個arraylist,一些字符串會有多個變量來替換。
什麼是找到這些列出了這些更換領域的最佳途徑。
我首先想到的是用掃描儀掃描通過字符串使用next(),如果我找到一個詞開頭的`我讀到字符串的結尾,並找出該領域是什麼來代替。
List<String []> vars = new ArrayList<String[]>() {};
int numfans, numsg, numcomp, numsys;
String [] newString;
String temp;
Scanner scan;
for(int i = 0; i < numRacks; i++){
// do all racks
for(String s: rackStr){
newString = new String[1];
scan = new Scanner(s);
while(scan.hasNext()){
temp = scan.next();
if(temp.startsWith("`") && temp.endsWith("`")){
System.out.println("Temp: " + temp);
System.out.println("Success");
newString[0] += findVar(temp);
}else {
newString[0] += temp;
}
}
vars.add(newString);
}
我想這可能是可怕的,如果我要創建一個新的掃描儀在多的ArrayList,我將有充分的字符串。
編輯 - 確定這樣str.replaceAll();是這樣的簡單的解決方案/捂臉
掃描儀是用於讀取和解析,不更換。 String類已經有了不錯的替換方法 - 爲什麼不使用它們呢? –