在Java
我正在使用String
的<Html>
代碼,這意味着要創建一個完整設計的電子郵件正文。 例如。如何在Java中聲明大字符串(<Html>代碼)以避免「常量字符串太長」錯誤?
String msg=
"<html>"+
<BODY CONTENT>
"</html>";
問題是我得到的錯誤「常量字符串太長」。 我需要一些想法,如果有人對你已經解決了這個問題,或者遇到這一點。
在Java
我正在使用String
的<Html>
代碼,這意味着要創建一個完整設計的電子郵件正文。 例如。如何在Java中聲明大字符串(<Html>代碼)以避免「常量字符串太長」錯誤?
String msg=
"<html>"+
<BODY CONTENT>
"</html>";
問題是我得到的錯誤「常量字符串太長」。 我需要一些想法,如果有人對你已經解決了這個問題,或者遇到這一點。
有不限常量字符串但可以在內存大得多的字符串,只要它是在運行時創建的,如通過資源閱讀它。
你可以試試這個解決方案。
private static String msg = null;
public static String getMyString() throws IOException {
if (null == msg) {
try (BufferedReader br = new BufferedReader(new InputStreamReader(MyClass.class.getResourceAsStream("msg.txt")))) {
msg = br.lines().collect(Collectors.joining("\n"));
}
}
return 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,例如:
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();
沒有這麼多的東西面臨constant string too long
錯誤,當我們能做到。
常量被限制爲每個String條目64K個元素,但是您可以將超出常量的幾個小於64K的元素作爲解決方法來拆分。
另一方面,在軟件設計方面,使用完整電子郵件主體作爲Strings的想法並非最終完美。通常開發人員爲此目的使用模板引擎,並將電子郵件正文外部化爲單獨的文件而不是字符串常量。請參閱Chunk模板引擎作爲適合Android應用的示例,但還有很多其他內容,如Velocity或Freemarker。模板引擎可以讓你清楚地動態填充件分開靜態電子郵件的內容,從它的HTML表示分開你的應用程序的數據模型,並維護軟件的有效架構
暫時不知道這會阻止您確切原因製作一個文件而不是常量,有很多最佳實踐來解決典型的文件連接問題,從將文件嵌入到jar中作爲資源開始,並最終加密它們以避免不必要的泄露。就這裏問一下另一個問題吧。
make substrings – Stultuske
@Stultuske你的意思是在Strings.xml裏? –
Strings.xml從哪裏來?我的意思是,不是說String a =「abcdefg ...」;你說String a =「ab」;字符串b =「cd」; ... – Stultuske