আমি নিম্নলিখিত টেমপ্লেট স্ট্রিং আছে: "Hello [Name] Please find attached [Invoice Number] which is due on [Due Date]"
।
নাম, চালান নম্বর এবং নির্ধারিত তারিখের জন্য আমার কাছে স্ট্রিং ভেরিয়েবলগুলিও রয়েছে - ভেরিয়েবলগুলির সাথে টেমপ্লেটে টোকেনগুলি প্রতিস্থাপনের সেরা উপায় কী?
(দ্রষ্টব্য যে কোনও ভেরিয়েবলের একটি টোকেন ধারণ করে থাকলে তা প্রতিস্থাপন করা উচিত নয়)।
সম্পাদনা
@ লাজিনিমায়েব এবং @ অ্যালান-মুরকে ধন্যবাদ দিয়ে, এখানে আমার সমাধানটি দেওয়া হয়েছে:
public static String replaceTokens(String text,
Map<String, String> replacements) {
Pattern pattern = Pattern.compile("\\[(.+?)\\]");
Matcher matcher = pattern.matcher(text);
StringBuffer buffer = new StringBuffer();
while (matcher.find()) {
String replacement = replacements.get(matcher.group(1));
if (replacement != null) {
// matcher.appendReplacement(buffer, replacement);
// see comment
matcher.appendReplacement(buffer, "");
buffer.append(replacement);
}
}
matcher.appendTail(buffer);
return buffer.toString();
}