私が持っているもの:
私はテキストを持っています"Hi {0}, my name is {1}."
私は持っていますList<String> names = Arrays.asList("Peter", "Josh");
{0} があるところに Peter を、{1} があるところに Josh を合わせようとしています。
私が欲しいもの:
Hi Peter, my name is Josh.
どうすればそれを行うことができますか?
MessageFormat クラスはあなたの友達です。http://download.oracle.com/javase/1.5.0/docs/api/java/text/MessageFormat.html
String aa = "Hi {0}, my name is {1}";
Object[] bb = {"Peter" , "John"};
System.out.println(MessageFormat.format(aa, bb));
おそらく最も簡単なのは、ループ内で String.replaceXX ops の 1 つを使用することです。例えば、
String sourceString = "Hi {1}, my name is {2}."
for (i = 0; i < names.size(); i++) {
String repText = names.get(i);
sourceString = sourceString.replace("{" + (i+1) + "}", repText);
}
StringBuffer などを使用する場合と比較して、新しい String を繰り返し作成するのは不適切な形式であるため、これは少し非効率的ですが、一般に、この形式のテキスト置換は頻度の低い操作になるため、単純さは効率よりも優先されます。
String text = "Hi {1}, my name is {2}.";
java.util.List<String> names = Arrays.asList("Peter", "Josh");
for(String s: names) text = text.replace("{" + (names.indexOf(s) + 1) + "}", s);
あなたはこのようなことをするでしょう。
List<String> names = Arrays.asList("Peter", "Josh");
System.out.printf("Hi %s, my name is %s.", names.get(0), names.get(1));
たった 2 行のコードでそれができます。
List<String> names = new ArrayList<String();
names.add("Peter");
names.add("Josh");
String str = "Hi {1}, my name is {2}.";
str = str.replaceFirst("{1}", names.get(0));
str = str.replaceFirst("{2}", names.get(1));
List<String> names = new ArrayList<String>();
names.add("Peter");
names.add("Josh");
System.out.println("Hi " + names.get(0) + ", my name is " + names.get(1) + ".");
私があなたを文字通りに連れて行って、あなたがもっと一般的な何かを望んでいるなら、私の謝罪ですが、これはあなたが尋ねた通りにうまくいくでしょう。
あなたのリストには正しい数の要素があると思います。
`String s = "Hi {1}, my name is {2}.";`
for(int x = 1;x <= names.size();x++)
{
s.replaceFirst("{" + x +"}",names.get(x - 1));
}