這是一種更通用的方法,它不要求您提供模式,適用於多個佔位符,並且可以匹配多個單詞的佔位符。比如說,我們有以下模板和輸入字串:
string input = "hi john doe, how are you? i'm jane.";
string template = "hi $namevar$, how are you? i'm $namevar2$.";
因此,我們首先解析所有佔位符名稱並將其新增到map。我們使用map,以便我們稍後可以將實際的string值指定為鍵。
matcher m = pattern.compile("\\$(\\w*?)\\$").matcher(template);
map vars = new linkedhashmap();
while (m.find()) {
system.out.println(m.group(1));
vars.put(m.group(1), null);
現在,我們生成模式以將佔位符值解析為
string pattern = template;
// escape regex special characters
pattern = pattern.replaceall("([?.])", "\\\\$1");
for (string var : vars.keyset()) {
// replace placeholders with capture groups
pattern = pattern.replaceall("\\$"+var+"\\$", "([\\\\w\\\\s]+?)");
現在,我們進行匹配並捕獲佔位符值。然後將這些值儲存在上面建立的同一map中,並將其分配給相應的佔位符變數。
m = pattern.compile(pattern).matcher(input);
if (m.matches()) {
int i = 0;
for (string var : vars.keyset()) {
vars.put(var, m.group(++i));
現在,讓我們通過迭代map來列印出我們捕獲的值
for (map.entry entry : vars.entryset()) {
system.out.println(entry.getkey() + " = " + entry.getvalue());
輸出:namevar = john doe
namevar2 = jane
WPF帶佔位符的TextBox
效果圖如下 使用的xaml 如下 window x class placeholdertextbox.mainwindow xmlns xmlns x xmlns local clr namespace placeholdertextbox title mainwindow width 525 he...
佔位符的使用
preparestatement介面改善問題 佔位符 演示 使用statement介面物件傳送的sql語句需要在資料庫中進行一次編譯之後成為指令才能執行,每條sql語句都需要編譯一次,這樣是很慢的。使用statement介面才做的sql可以需要使用字串拼接的方式實現,這樣的方式可能存在sql注入的安...
C 的佔位符
static void main string args a 65 97 console readline 執行結果 a 65 a 97當 writeline 函式有多個引數時,輸出第乙個引數中的內容,而第二個引數中的內容替換掉第乙個引數中對應位置的佔位符一起輸出。如果第乙個引數沒有留佔位符,那麼第...