如何在Java中声明大字符串(代码)以避免“常量字符串过长”错误?

如何在Java中声明大字符串(代码)以避免“常量字符串过长”错误?,java,android,html,Java,Android,Html,在Java中,我使用一个大字符串作为代码,这意味着创建一个完整设计的电子邮件正文。 例如 问题是我得到的错误常量字符串太长”。 如果你们中的任何人已经解决了这个问题或遇到了这个问题,我需要一些想法。常量字符串有限制,但只要在运行时创建(例如通过资源读取),内存中就可以有更大的字符串 你可以试试这个解决方案 您可以调用它并将其保存在另一个字符串中: String str = getMyString(); System.out.println("str = " + str); 也可以使用字符串生成

在Java中,我使用一个大字符串作为代码,这意味着创建一个完整设计的电子邮件正文。 例如

问题是我得到的错误常量字符串太长”。
如果你们中的任何人已经解决了这个问题或遇到了这个问题,我需要一些想法。

常量字符串有限制,但只要在运行时创建(例如通过资源读取),内存中就可以有更大的字符串

你可以试试这个解决方案

您可以调用它并将其保存在另一个字符串中:

String str = getMyString();
System.out.println("str = " + str);
也可以使用字符串生成器构建字符串


希望这是有帮助的。cheers

常量字符串有限制,但只要在运行时(例如通过资源读取)创建,内存中就可以有更大的字符串

你可以试试这个解决方案

您可以调用它并将其保存在另一个字符串中:

String str = getMyString();
System.out.println("str = " + str);
也可以使用字符串生成器构建字符串

希望这是有帮助的。干杯

尝试使用,例如:

尝试使用,例如:


当遇到常量字符串过长错误时,我们可以做的事情不多

常量被限制为每个字符串项64K个元素,但您可以将超出的常量拆分为几个小于64K的元素作为解决方法

另一方面,在软件设计方面,将完整的电子邮件正文作为字符串进行处理的想法最终并不是完美的。开发人员通常使用模板引擎来实现这一目的,并将电子邮件正文外部化为单独的文件,而不是字符串常量。请以模板引擎为例,它非常适合Android应用程序,但还有很多其他的例子,如或。模板引擎使您能够清楚地将静态电子邮件内容与动态填充的部分分开,将应用程序数据模型与其html表示分开,并维护软件的有效体系结构


由于不知道阻止您生成文件而不是常量的确切原因,因此有许多最佳实践可以解决典型的文件连接问题,从将文件作为资源嵌入到jar中开始,到对其进行加密以避免不必要的泄漏。在这里再问一个问题。

当遇到常量字符串过长错误时,我们可以做的事情不多

常量被限制为每个字符串项64K个元素,但您可以将超出的常量拆分为几个小于64K的元素作为解决方法

另一方面,在软件设计方面,将完整的电子邮件正文作为字符串进行处理的想法最终并不是完美的。开发人员通常使用模板引擎来实现这一目的,并将电子邮件正文外部化为单独的文件,而不是字符串常量。请以模板引擎为例,它非常适合Android应用程序,但还有很多其他的例子,如或。模板引擎使您能够清楚地将静态电子邮件内容与动态填充的部分分开,将应用程序数据模型与其html表示分开,并维护软件的有效体系结构


由于不知道阻止您生成文件而不是常量的确切原因,因此有许多最佳实践可以解决典型的文件连接问题,从将文件作为资源嵌入到jar中开始,到对其进行加密以避免不必要的泄漏。在这里再问一个问题。

substrings@Stultuske你是说Strings.xml内部?Strings.xml从哪里来?我的意思是不是,而不是说字符串a=abcdefg。。。;你说字符串a=ab;字符串b=cd。。。使用字符串资源。使用原始资源。使用资产。字符串msg=+???这永远不会编译。你的意思是:字符串味精=+正文内容+;`?制作substrings@Stultuske你是说Strings.xml内部?Strings.xml从哪里来?我的意思是不是,而不是说字符串a=abcdefg。。。;你说字符串a=ab;字符串b=cd。。。使用字符串资源。使用原始资源。使用资产。字符串msg=+???这永远不会编译。你的意思是:字符串味精=+正文内容+;`?
String str = getMyString();
System.out.println("str = " + str);
StringBuilder sb = new StringBuilder(100);
sb.append("<html>")
      .append("<body>").append(bodycontent)
      .append("</body>")
      .append("</html>");
String result = sb.toString();
StringBuilder msg = new StringBuilder(here_put_size); //change string size, default value is 16 characters
msg.append("<html>");
msg.append("<BODY CONTENT>");
msg.append("</html>");
return msg.toString();