我有以下字符串:在相當長的字符串替換字符串:
你在哪裏[員工姓名]? 您有[SHIFT]換檔......
,幷包含字符串列表:
員工姓名
2.移
我需要在長字符串中查找列表中給定的字符串,並將其替換爲另一個內容(包括[
和]
字符)。 因此,例如第一個字符串需要更改爲:
你在哪裏綠色? 你有一個早班...
有沒有簡單的方法來做到這一點?使用IndexOf
將給我這個字符串的位置,但我將如何包括[
,]
人物?
UPDATE: 這是我測試至今代碼:
Scanner sc = new Scanner(smsText);
for (String s; (s = sc.findWithinHorizon("(?<=\\[).*?(?=\\])", 0)) != null;)
{
words.add(s);
}
for (int j = 0; j < words.size(); j++)
{
Log.d(TAG, "The value for column: "+words.get(j) +" is: "+ rowData.getValue(words.get(j)));
smsText.replaceFirst("\\[" + words.get(j) + "\\]", rowData.getValue(words.get(j)));
}
Log.d(TAG, "Final String is: "+ smsText);
這是不給我正確的結果,該字符串不會被替換。
UPDATE2: 爲我工作的解決方案是:
Scanner sc = new Scanner(smsText);
for (String s; (s = sc.findWithinHorizon("(?<=\\[).*?(?=\\])", 0)) != null;)
{
columnNames.add(s);
}
for (int j = 0; j < columnNames.size(); j++)
{
Log.d(TAG, "The value for column: "+columnNames.get(j) +" is: "+ rowData.getValue(columnNames.get(j)));
smsText = smsText.replaceFirst("\\[" + columnNames.get(j) + "\\]", rowData.getValue(columnNames.get(j)));
}
Log.d(TAG, "Final String is: "+ smsText);
感謝所有您的幫助。
如果你有超過模板控制,他們改用'%s'和使用'的String.format()'。 – CommonsWare 2013-05-05 13:02:01
@CommonsWare,不幸的是,我不知道,「[」和「]」裏面的短語是我需要從中提取替換內容的列名,所以它也不能被更改。 – 2013-05-05 13:04:39
@EmilAdz是這個字符串'你在哪裏[員工姓名]?你有一個共同的[Shift] shift?你想用僱員的名字替換'[Employee Name]'嗎?讓我知道 – Pragnani 2013-05-05 13:08:51