2012-03-27 63 views
1

我正在開發一個應用程序來通過ZXing讀取QR碼。代碼運行完美,但我有問題插手掃描結果,因爲我想改變它的某些單詞。考慮掃描結果是這樣的:替換「:」後的文字

ID: 1001 Detail: RM9999 

我應該怎麼做,如果我想改變上面的字符串中的「9999」與另一個字符串?讓說,這是

String a1 = 1500 

所以預期的結果將是

ID: 1001 Detail: RM1500 

編輯:

@Bohemian所以實際的問題是我的QR碼居然顯示是這樣的:

ID: 1001 
Detail: RM9999 

而不是我先前顯示的線性線。任何解決方法?

+0

什麼是規則?數字是否總是被替換爲字符串的最後4位數字? – 2012-03-27 23:06:49

+0

規則是 「ID:」< - 固定 「1001」< - 從101,1001,10001,999等 變化 「詳情:」< - 落入以上後,固定 「RM」< - 固定 「 9999「< - 變化爲任何數字。事實上,如果可以用2個十進制最小值顯示它就更好了。 謝謝! – 2012-03-28 05:46:16

回答

2

您可以使用回顧後:

String s = stringFromQr.replaceAll("(?<=: RM)9999", "1500"); 

這意味着取代 「9999」 開頭的所有事件 「:RM」 與 「1500」。

編輯,回答的意見,你可以這樣做:

String s = stringFromQr.replaceAll("(?<=: RM)" + Pattern.quote(stringToReplace), stringToReplaceWith); 

注意我用了Pattern.quote來逃避任何正則表達式的效果。

+0

你的代碼有效!但不是固定的「9999」,我如何使它變得可變?並且有可能使結果顯示1500.00而不是1500? – 2012-03-28 06:43:51

+0

是的。您可以根據需要構建字符串。 – MByD 2012-03-28 07:56:15

+0

即時通訊不好意思,但是會是什麼樣的字符串?從來沒有學過這個:( – 2012-03-28 08:54:57

0

此使用查找隱藏在它匹配輸入變量的數字:

public static void main(String[] args) throws Exception { 
    String input = "ID: 1001 Detail: RM9999"; 
    String a1 = "1500"; 
    String result = input.replaceAll("(?<=ID: \\d{1,4} Detail: [A-Z]{1,2})\\d+", a1); 
    System.out.println(result); 
} 

輸出:

ID: 1001 Detail: RM1500 

此代碼也將與ID: 789 Detail: RM123ID: 66 Detail: X55工作例如

+0

原因,這行不會在Android上工作我編輯我的主帖子爲代碼 – 2012-03-28 06:08:54

+0

出於某種原因,這行不會在Android上工作我編輯了我的主要帖子的代碼.. 我得到println的「輸入「之前的輸入。取代所有基於你的代碼 順便說一句,我知道問題在哪裏。在我的qr代碼中,該行實際上是上面編輯的。請指教 – 2012-03-28 06:26:30