将数据字段嵌入文本的最佳方式是什么,以便它们很容易检索,并且不会影响可读性(很多)?例如,我可以做一些类似于 “这里的一些说明,其次是@firstname:John @lastname:Smith \ n”,然后编写代码来解析出这些字段。然后我可以开始解决这些问题,比如嵌入的@ -signs。嵌入数据字段在文本中的最佳方式?
但是这已经做了好几千次了,我希望有人能指点我一个固定的模式。
将数据字段嵌入文本的最佳方式是什么,以便它们很容易检索,并且不会影响可读性(很多)?例如,我可以做一些类似于 “这里的一些说明,其次是@firstname:John @lastname:Smith \ n”,然后编写代码来解析出这些字段。然后我可以开始解决这些问题,比如嵌入的@ -signs。嵌入数据字段在文本中的最佳方式?
但是这已经做了好几千次了,我希望有人能指点我一个固定的模式。
要去下注根据你的问题的猜测,让我知道如果我误解...
你想要去的东西,可以很容易地通过正则表达式和/或变量替换被拾起。它也应该是你在文本中不经常使用的字符。
就像“Hello $ {firstName}你今天过得怎么样?”,或者更简单的“你好{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;
}
它不应该蜂很难移植到支持正则表达式其他语言。
也许有点黑客,但如果这只是格式化一些文本的消息或国际化(等)的简单要求,你可以滥用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);
当然,唯一的问题是你不能在参数的这个顺序指定,就在那里出现。这可能会也可能不是问题,但如果不是这样,这可能是最快的解决方案。
你在用什么语言? – gubby 2010-02-19 00:00:20