如何在第一个string.format上转义%s,以便它可以在第二个中使用?

时间:2014-06-04 21:55:52

标签: java

我有一个Java项目,我在我们的"查询模块"中工作。它负责从我们调用的字符串构建查询"片段"。 要做到这一点, 我正在使用这样的东西

myQueryOuter{
               %s
}

myInnerQuery{
      QUERY TEXT
}

使用String.Format会起作用,但是现在我的一个查询接受的值被编码为"%s",因此当我调用String.format方法时会抛出异常。

有没有逃过%s?这样我就可以创建整个查询,然后应用String.Format来替换值的%s。

或者有更好的方法可以做这样的事情吗?

谢谢!

编辑: 让我澄清一下:

我有以下

myQueryOuter{
                   %s
}
myInnerQuery{
          The next blank space should be filled by a parameter: %s
    }

我想制作

String output = String.Format(myOuterQuery, myInnerQuery) //this throws an exception

所以我有这个输出

  

myQueryOuter {           myInnerQuery {                 下一个空格应填入参数:%s           }       }

所以我可以打电话给

String realOutput = String.format(output, "ThisIsMyParameter")

所以我有

  

myQueryOuter {           myInnerQuery {                 下一个空格应该由参数填充:这是我的输出           }       }

例外是:

  

org.springframework.web.util.NestedServletException:Request   处理失败;嵌套异常是   java.util.MissingFormatArgumentException:格式说明符'%s'

因为我有两次%s,但我希望我的输出有%s

1 个答案:

答案 0 :(得分:3)

在格式化之前,您需要将%替换为%%

然后使用您的参数格式化%% s ..这将完成工作

希望有所帮助