是否有一种简单的方法可以从字符串中删除%j或%f之类的内容并将其替换为int?喜欢:
XYZ:%J Num:%f
成为
XYZ:12 Num:34
答案 0 :(得分:3)
一种简单的方法是:
"XYZ: %J Num: %f".replace("%J", "12").replace("%f", "34");
答案 1 :(得分:1)
import java.util.Enumeration;
import java.util.Hashtable;
public class BasicReplace {
public static void main(String[] args) {
Hashtable<String, Integer> values = new Hashtable<String, Integer>();
values.put("%J", 3);
values.put("%F", 5);
values.put("%E", 7);
String inputStr = "XYZ: %J ABC: %F";
String currentKey;
Enumeration<String> enume = values.keys();
while(enume.hasMoreElements()){
currentKey = enume.nextElement();
inputStr = inputStr.replaceAll(currentKey, String.valueOf(values.get(currentKey)));
}
System.out.println(inputStr);
System.out.println("XYZ: %J Num: %f".replace("%J", "12").replace("%f", "34"));
}
}
TUNDUN! :d 答案 2 :(得分:1)
如果您想要可靠地执行此操作,还应考虑%J
可能以%
字符作为前缀,在这种情况下%J
不应被替换。 E.g。
XYZ: %J Num: %f. %%Just like I told you%%
然后打印为
XYZ: 12 Num: 34. %Just like I told you%
所以我不认为正则表达式可以用于此。您需要跟踪状态,这些内容很简单,如我的回答here中所述。
答案 3 :(得分:1)
也许您实际上想要在库中的任何地方使用java.util.Formatter
类或它的包装器方法?
"XYZ: %Y Num: %f".format(new Date(), 30)
应该给"XYZ: 2011 Num: 30.000000"
。嗯,虽然看起来不像你想要的......