2010-02-18 62 views
0

將數據字段嵌入文本的最佳方式是什麼,以便它們很容易檢索,並且不會影響可讀性(很多)?例如,我可以做一些類似於 「這裏的一些說明,其次是@firstname:John @lastname:Smith \ n」,然後編寫代碼來解析出這些字段。然後我可以開始解決這些問題,比如嵌入的@ -signs。嵌入數據字段在文本中的最佳方式?

但是這已經做了好幾千次了,我希望有人能指點我一個固定的模式。

+0

你在用什麼語言? – gubby 2010-02-19 00:00:20

回答

1

要去下注根據你的問題的猜測,讓我知道如果我誤解...

你想要去的東西,可以很容易地通過正則表達式和/或變量替換被拾起。它也應該是你在文本中不經常使用的字符。

就像「Hello $ {firstName}你今天過得怎麼樣?」,或者更簡單的「你好{0}怎麼了?」

一些語言已經建立了對此的支持,因此它取決於您的環境。

0

正如邁克所說,這取決於環境。在.NET中,您有「Hello {0}」,多種語言使用「Hello%s」,使用MooTools的JavaScript使用「Hello {name}」等等。 「{0}」和「%s」都取決於參數的順序(這可能是一個缺點)。

如果你有興趣在如何通過自己在這裏實現它是一個使用JavaScript中的正則表達式的例子:

// Variables should be an object at the current form: 
// {name: 'John', age: 13} 
function substitute(string, variables) 
{ 
    var result = string.replace(/\\?\{([^{}]+)\}/g, function(match, name) { 
     if(match.charAt(0) == '\\') return match.slice(1); //If there was a backslash before the first {, just return it as it was. 
     return (variables[name] != undefined) ? variables[name] : ''; 
    }); 
    return result; 
} 

它不應該蜂很難移植到支持正則表達式其他語言。

0

也許有點黑客,但如果這只是格式化一些文本的消息或國際化(等)的簡單要求,你可以濫用String.format()(在Java中,大概這些Windows語言有類似的東西),其中它可以是一個可變參數或數組參數是這樣的:

String text = "Hello %s, do you still live at %s?"; 
String[] replacements = { 
    user.name(), 
    user.address() 
}; 

String formatted = String.format(text, replacements); 

當然,唯一的問題是你不能在參數的這個順序指定,就在那裏出現。這可能會也可能不是問題,但如果不是這樣,這可能是最快的解決方案。

相關問題