在文本中嵌入数据字段的最佳方法是什么,以便它们易于检索,并且不会影响可读性(多)?
例如,我可以做类似的事情 “这里有一些说明,后跟@firstname:John @lastname:Smith \ n”,然后编写代码来解析字段。然后我就可以开始解决问题,比如嵌入式@ -signs。
但这已经成千上万次了,我希望有人可以指出我已经确定的模式。
答案 0 :(得分:1)
根据你的问题打赌猜测,让我知道我是否误解了......
你会想要通过正则表达式和/或变量替换来轻松获取的东西。它也应该是您在文本中不经常使用的字符。
类似“Hello $ {firstName}你今天过得怎么样?”,或更简单地说“你好{0}怎么了?”
有些语言已经内置了对此的支持,因此它取决于您的环境。
答案 1 :(得分: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;
}
不应该硬件移植到支持正则表达式的其他语言。
答案 2 :(得分:0)
也许有点像黑客,但如果这只是为消息或国际化(等)格式化一些文本的简单要求,你可能滥用String.format()(在java中,大概那些windows语言有类似的东西) ,它采用像这样的varargs或数组参数:
String text = "Hello %s, do you still live at %s?";
String[] replacements = {
user.name(),
user.address()
};
String formatted = String.format(text, replacements);
唯一的问题当然是你不能在这里指定参数的顺序,只是它们出现的位置。这可能是也可能不是问题,但这可能是最快的解决方案,如果不是。