我正在尝试语言套件中的新方向(或者您想要用占位符调用那些多语言文本文件)。基本上,我有这样的文字:Hello, my name is %0. Welcome to %1!
。这将是我的pText。
我的pValues是一个数组,其值代表%0和%1。
以下函数应找到%0并将其替换为pValues [0],依此类推。
function _parseDialogMessage(pText, pValues) {
var result = pText;
for (var i=0; i<pValues.length; ++i) {
var regex = new RegExp('\%'+i, 'gi');
pText = pText.replace(regex, pValues[i]);
}
return result;
}
除了它不替换占位符%0和%1这一事实外,它都有效。所有变量都有预期值,但.replace似乎找不到我的占位符。
任何帮助?
对我感到羞耻...... -.-
答案 0 :(得分:4)
您不需要“动态正则表达式”,因为replace
可以将函数作为参数:
function _parseDialogMessage(pText, pValues) {
return pText.replace(/%(\d+)/g, function (s, i) { return pValues[i]; });
}
(你应该return pText
。)
答案 1 :(得分:3)
您将返回result
变量,该变量包含ptext
参数的初始值..
返回pText
变量..
答案 2 :(得分:0)
UUhm,你返回结果而不是替换pText
答案 3 :(得分:0)
虽然您不能使用任何代码,除非您想要GPL库,gnu的gettext手册涵盖了与国际化相关的许多主题背后的基本原理。
http://www.gnu.org/software/gettext/manual/gettext.html
编辑:我知道你只是在寻找一个神奇的正则表达式,但这还不够。
简单的例子:
您是否知道阿拉伯语对于两件事情有特殊的时态,而中国人对所提到的事物的数量并不紧张?