Java:正则表达式去除:%j或%f

时间:2011-02-13 00:25:17

标签: java

是否有一种简单的方法可以从字符串中删除%j或%f之类的内容并将其替换为int?喜欢:

XYZ:%J Num:%f

成为

XYZ:12 Num:34

4 个答案:

答案 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"。嗯,虽然看起来不像你想要的......