次の文字列があります。
[従業員名] はどこにいますか? あなたは[シフト]シフトを持っています...
および以下を含む文字列のリスト:
1.従業員名
2.シフト
長い文字列のリストで指定された文字列を見つけて、それらを別のコンテンツ ([
および]
文字を含む) に置き換える必要があります。たとえば、最初の文字列を次のように変更する必要があります。
ジョン・グリーンはどこにいますか? あなたは朝のシフトを持っています...
それを行う簡単な方法はありますか?を使用IndexOf
すると、この文字列の場所がわかりますが、 , 文字もどのように含めるの[
です]
か?
更新: これは私がこれまでにテストしたコードです:
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);
ご協力いただきありがとうございます。