有没有办法输入多行文本(存储为字符串)作为Java代码而不格式化?

时间:2012-02-28 19:33:04

标签: java text formatting escaping code-formatting

(对于Java中的多行字符串,请参阅:Java multiline string。考虑到Web应用程序和HTML输出上下文,下面的问题可能会出现在不同的答案中。)

有没有办法输入多行文本(存储String)作为Java代码而不进行格式化?

我想避免:

    每行
  1. "..." +格式(用Java包装文本所必需的)
  2. 转义文本中包含的引号。
  3. 避免\n每行中断
  4. 它是一个MVC网络应用程序及其输出的HTML代码,在这里和那里都配有一些变量。有问题的字符串只要它是表的整行,其中每行包含id,key,value等值。.jsp文件只有一个变量包含最终输出由Java方法生成的所有这些行。我已经使用表单中的下拉框完成了相同的操作,生成了可能的选项<option>...</option>,但是当使用Java生成时,该代码很小且很紧凑。相比之下,我坚持的这些行是庞大而复杂的。我希望输出HTML可读。

    可能不会,但不得不问。永远不知道你会错过什么。

2 个答案:

答案 0 :(得分:5)

我猜你问这个问题是因为你要在Java代码中保留一个非常大的字符串。这很糟糕。

代码和资源是不同的东西,不推荐混合它们。 Java提供了许多管理资源的方法,您可以使用Properties来存储纯文本/ HTML资源,使用ResourceBundle来存储本地化资源。

PS你提到了变量 - 我希望你没有连接它们吗?在资源包中添加类似foo=bar{0}的内容然后执行String.format(bundle.getString("foo"), fooNum);应该是首选方式。

修改

关于包含整个HTML表的Java变量 - 这就是JSP Custom Tags被发明的原因 - 来封装你奇怪的HTML生成逻辑。在Tag Files中使用JSTL实现HTML表生成逻辑是可行的 - 您不需要编译任何内容。

答案 1 :(得分:0)

如果用多行表示段落的存在,那么"\n"就足够了。如果我想要更高级的多行字符串,通常要做的是创建一个内部带有变量的类,该变量将每行存储在String[]ArrayList<String>中: