开发者

JavaScript: dynamic regex for my own parser

开发者 https://www.devze.com 2022-12-18 12:42 出处:网络
I am trying a new direction in Language Kits (or whatever you want to call those multi language text files with placeholders). Basically, I have text like this: Hello, my name is %0. W开发者_StackOver

I am trying a new direction in Language Kits (or whatever you want to call those multi language text files with placeholders). Basically, I have text like this: Hello, my name is %0. W开发者_StackOverflow中文版elcome to %1!. This would be my pText.

My pValues is an array whose values represent %0 and %1.

The following function should find %0 and replace it with pValues[0] and so on.

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;
}

It all works except for the fact that it does not replace the placeholders %0 and %1. All Variables have the expected values but .replace doesn't seem to find my placeholders.

Any help?

Edit 1

Shame on me... -.-


You don't need "dynamic regex", since replace can take a function as argument:

function _parseDialogMessage(pText, pValues) {
  return pText.replace(/%(\d+)/g, function (s, i) { return pValues[i]; });
}

(and you should return pText.)


You are returning the result variable which hold the initial values of the ptext parameter..

return the pText variable..


UUhm, you return result and not the replace pText


While you can't use any of their code unless you want to GPL your library, the manual for gnu's gettext covers the rationale behind a number of topics related to internationalization.

http://www.gnu.org/software/gettext/manual/gettext.html

edit : I know you're just looking for a magic regex, but it won't be enough.

easy example :

  • I have %n computers.
  • I have 1 computers.

Did you know arabic has a special tense for 2 things, and chinese no tense for the number of things referred to?

0

精彩评论

暂无评论...
验证码 换一张
取 消