【问题标题】:How to escape %s on the first string.format so it can be used in the second one? [duplicate]如何在第一个 string.format 上转义 %s 以便可以在第二个中使用它? [复制]
【发布时间】:2014-07-25 17:50:10
【问题描述】:

我有一个 Java 项目,正在我们的“查询模块”中工作。它负责从我们称为“sn-ps”的字符串构建查询。 要做到这一点, 我正在使用这样的东西

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{ 我的内部查询{ 下一个空格应由参数填充:%s } }

所以我可以打电话

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

所以我有

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

例外是:

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

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

【问题讨论】:

  • 这不清楚。抛出异常的代码是什么?
  • 哎呀,我的眼睛。我虽然一个 %s 已经够糟糕了,但是嵌套格式字符串....

标签: java


【解决方案1】:

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

然后用你的参数格式化 %%s.. 这样就可以了

希望有帮助

【讨论】:

    猜你喜欢
    • 2021-05-13
    • 2022-06-14
    • 1970-01-01
    • 2018-06-05
    • 1970-01-01
    • 1970-01-01
    • 2013-10-16
    • 1970-01-01
    • 2023-04-05
    相关资源
    最近更新 更多