Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java正则表达式以查看字符串是否包含%s,%d,%n_Java_Regex_Format - Fatal编程技术网

Java正则表达式以查看字符串是否包含%s,%d,%n

Java正则表达式以查看字符串是否包含%s,%d,%n,java,regex,format,Java,Regex,Format,So我正在编写我自己的toString()方法的变体,基本上是在调用该方法时,传入一个字符串,然后传入一个参数toString(Object…args)。像这样 this.toString("%8s", this.log, "%n%s %s", this.theMap, "%s", this.countIterator()); 因此,我使用以下代码来查看传入的参数是常规字符串还是格式字符串 if(args[i].getClass().getName() == "java.lang.String

So我正在编写我自己的
toString()
方法的变体,基本上是在调用该方法时,传入一个字符串,然后传入一个参数
toString(Object…args)
。像这样

this.toString("%8s", this.log, "%n%s %s", this.theMap, "%s", this.countIterator());
因此,我使用以下代码来查看传入的参数是常规字符串还是格式字符串

if(args[i].getClass().getName() == "java.lang.String") {
  if(args[i].toString().contains("%\\-?[1-9]s?*")) {

    format = args[i].toString();

  } else {

    s += args[i].toString();

  }
}
args[i].toString()包含(“%\\-?[1-9]s?*”)
regex不起作用,但是当我使用
args[i].toString().matches(“%\\-?[1-9]s?*”)
它只适用于
%s
%9s
字符串的实例,而不适用于
%s%s
字符串的实例。当我将正则表达式中的
s
d
n
交换时,它也会起作用

我知道你在问为什么要重新发明轮子,只需使用
String.format()
,我应该这么做,因为我已经想到了这一点,在解决它之前,我什么都做不了

我还尝试复制和粘贴
java.util.Formatter
class'
“%(\\d+\\$)?([-\+0,(\\试试这个

Pattern p = Pattern.compile("(%[0-9]*(s|d|n))");
System.out.println("match: " + p.matcher(str).find());
您可以将模式存储为全局或静态变量,并在需要时重用它