原始问题,但我如何格式化这样的字符串:
"{2}的步骤{1}"
通过使用Java替换变量?在C#中很容易.
StringJava中是否有任何替换机制,我可以使用文本传递对象,并在发生时替换字符串.
例如,文本是:
Hello ${user.name},
Welcome to ${site.name}.
Run Code Online (Sandbox Code Playgroud)
我拥有的对象是"user"和"site".我想${}用对象中的等价值替换内部给出的字符串.这与我们替换速度模板中的对象相同.
在连接大量字符串时,我建议使用StringBuilder如下方法:
StringBuilder someString = new StringBuilder("abc");
someString.append("def");
someString.append("123");
someString.append("moreStuff");
Run Code Online (Sandbox Code Playgroud)
而不是
String someString = "abc";
someString = someString + "def";
someString = someString + "123";
someString = someString + "moreStuff";
Run Code Online (Sandbox Code Playgroud)
这将导致创建相当多的字符串,而不是一个.
现在,我需要做类似的事情,但我没有使用串联,而是使用replaceString 的方法:
String someString = SOME_LARGE_STRING_CONSTANT;
someString = someString.replace("$VARIABLE1", "abc");
someString = someString.replace("$VARIABLE2", "def");
someString = someString.replace("$VARIABLE3", "123");
someString = someString.replace("$VARIABLE4", "moreStuff");
Run Code Online (Sandbox Code Playgroud)
要使用StringBuilder完成同样的事情,我必须这样做,只为一个替换:
someString.replace(someString.indexOf("$VARIABLE1"), someString.indexOf("$VARIABLE1")+10, "abc");
Run Code Online (Sandbox Code Playgroud)
所以我的问题是:"使用String.replace是否更好,并且创建了大量额外的字符串,或者仍然使用StringBuilder,并且有很多冗长的线条,例如上面那个?"