需求:Toast 顯示 `Your message "message" is sent to "contact"`,包含雙引號包裹的變量。
// 錯誤:" 是 HTML 實體,Java 字符串中無效
Toast.makeText(context, "Your message " + """ + message + """ + " is sent to " + phoneNo, ...)
String toastText = "Your message \"" + message + "\" is sent to \"" + phoneNo + "\"";
Toast.makeText(context, toastText, Toast.LENGTH_SHORT).show();
String toastText = String.format("Your message \"%s\" is sent to \"%s\"", message, phoneNo);
Toast.makeText(context, toastText, Toast.LENGTH_SHORT).show();
優點:模板與數據分離、易國際化、避免拼接錯誤。
res/values/strings.xml
<string name="toast_sent_fmt">Your message "%1$s" is sent to "%2$s"</string>
代碼中
String text = getString(R.string.toast_sent_fmt, message, phoneNo);
Toast.makeText(context, text, Toast.LENGTH_SHORT).show();
優點:集中管理、支持多語言、編譯期檢查佔位符數量。
\" 轉義,而非 HTML 實體。String.format 或資源文件佔位符,告別拼接地獄。