我有以下字符串:
你在哪里[员工姓名]?你有 [Shift] 班次...
和一个字符串列表,其中包含:
1.员工姓名
2.换班
我需要在长字符串的列表中找到给定的字符串,并将它们替换为另一个内容(包括[
和]
字符)。因此,例如第一个字符串需要更改为:
你在哪里约翰格林?你有早班...
有什么简单的方法可以做到这一点吗?usingIndexOf
会给我这个字符串的位置,但我将如何包含[
,字符]
呢?
更新: 这是我到目前为止测试的代码:
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);
感谢大家的帮助。