我有以下字符串:
s = "The device %s was opened."
是否有可能知道String是否必须用格式化方法填充?
如果是第一个问题,是否有可能知道此字符串中存在多少%s
?
答案 0 :(得分:2)
没有
您无法判断字符串“是否必须使用格式方法填充”,因为,
用于标记 printf 格式方法的插入点的字段是潜在有效的字符串内容。
这是一个例子:
The insert point for a String parameter is "%s"
此字符串不需要格式化, 但包含有效的插入点。
String.format方法的每个插入点都包含百分号(%), 但格式字符串相当复杂。 您需要解析字符串并搜索插入点。
尝试在google中搜索Formatter.java源代码。
以下是API页面:Formatter
答案 1 :(得分:1)
代码示例以检查您的字符串是否包含'%s'符号和返回计数。
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Test {
public static void main (String[] args) {
String s = "%s my string with %s";
int i = 0;
Pattern p = Pattern.compile("%s");
Matcher m = p.matcher(s);
while (m.find()) {
i++;
}
System.out.println(i);
}
}
答案 2 :(得分:0)
要知道字符串是否包含%s:
s.contains("%s")
计算"%s"的数量在String中,您可以使用:
s.split("%s").length - 1;
仅当contains返回true时才应使用第二部分。 例如:
public static void main(String[] args)
{
String s = "ssss %s %s gg";
boolean b = s.contains("%s");
int count = 0;
if (b)
{
count = s.split("%s").length - 1;
}
System.out.println("b: " + b);
System.out.println("count: " + count);
}