我有以下字符串:
Where Are You [Employee Name]?
your have a [Shift] shift…
以及包含以下内容的字符串列表:
1.员工姓名
2.转变
我需要在长字符串的列表中找到给定的字符串,并用其他内容(包括[和]字符)替换它们.
例如,第一个字符串需要更改为:
Where Are You Jhon Green?
your have a morning shift…
有没有简单的方法呢?使用IndexOf将给我这个字符串的位置,但我如何包括[,] charecters?
更新:
这是我到目前为止测试的代码:
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);
感谢大家的帮助.
解决方法:
String key = myColumns.getName();
s.replaceFirst("\\[" + key + "\\]", myReplacements.getReplacement(key));
你也可以使用indexOf,但是使用replace函数可以立即清楚你想要做什么.
标签:indexof,android,java,string
来源: https://codeday.me/bug/20190725/1534597.html