致电方法:
String Text =" Test Cash。存入一个帐户%的货币%";
字符串标记=" 12345 | USD&#34 ;;
String parsedText = parseText(Text,Token);
private static String parseText(String text,String tokens){
String textDelimiter = text.trim().replaceAll("[a-zA-Z0-9_.]", "");
String tokenDelimiter = tokens.trim().replaceAll("[a-zA-Z0-9_.]", "");
String[] tokenSplit = tokens.split(tokenDelimiter);
String[] textSplit = text.split(textDelimiter);
String result = "";
for (int i = 0; i < textSplit.length; i++) {
result += textSplit[i] + tokenSplit[i];
}
System.out.println(result);
return result;
}
答案 0 :(得分:1)
如果没有测试数组的正确大小,这可能是一个提示:
private String parseText(String text, String tokens, String textDelimiter, String tokenDelimiter){
String[] tokenSplit = tokens.split(tokenDelimiter);
String[] textSplit = text.split(textDelimiter);
String result = "";
for (int i = 0; i <textSplit.length; i++){
result += textSplit[i] + tokenSplit[i];
}
System.out.println(result);
return result;
}
电话:
String Text="Test Cash deposit for an account % of currency %";
String Token="12345|USD";
String parsedText = parseText(Text, Token, "%", "\\|");
答案 1 :(得分:1)
如果您能够更改Text
和Token
的格式,则可以这样做
String format = "Test Cash deposit for an account %s of currency %s";
String[] tokens = {"12345","USD"};
String amended = String.format(format, tokens[0], tokens[1]);
System.out.println(amended);
答案 2 :(得分:0)
您必须使用String.format(..)
方法,例如:
String output = String.format("Test Cash deposit for an account %s of currency %s","12345","USD");
答案 3 :(得分:0)
试试这个
String Text="Test Cash deposit for an account %d of currency %s";
String[] Tokens="12345|USD".split("\\|");
System.out.printf(Text, Integer.valueOf(Tokens[0]), Tokens[1]);
答案 4 :(得分:0)
对于动态令牌,只需创建一个方法:
public String convert(String text, String value){
return String.format("test", value.split("\\|")
);
你只需要将其称为转换每个&#39;%s&#39;在收到参数的文本中:
String Text="Test Cash deposit for an account %s of currency %s";
String Token="12345|USD";
System.out.println(convert(Text, Token));
您可以直接使用它:
System.out.println(
String.format(
"Test Cash deposit for an account %s of currency %s",
(Object[]) "12345|USD".split("\\|"))); //Casting to remove the warning, not sure if one Object or a var-args. Cast in array to use var-args
但这不是很好;)
您将确保%s的数量大于或等于收到的令牌数量,如果不是,您将最终得到一个例外(对于许多参数)。
编辑:
对于不知道两个String的特定分隔符的版本:(不使用[a-zA-z0-9._]
public static void main(String[] args) {
parseText("test % to % or #", "5+8^test"); //test 5 to 8 or test
}
private static void parseText(String text, String tokens) {
String regex = "[^\\w. ]+"; // \w = alphanumeric + _
text = text.replaceAll(regex, "%s");
System.out.println(String.format(text, (Object[]) tokens.split(regex)));
}