Это может быть легко жестко закодировано в словаре, если есть ограниченное количество чисел, которое вы хотите проанализировать.
Для немного более сложных случаев вы, вероятно, захотите сгенерировать этот словарь автоматически, основываясь на относительно простой грамматике чисел. Что-то вроде этого (конечно, обобщенного ...)
for i in range(10):
myDict[30 + i] = "thirty-" + singleDigitsDict[i]
Если вам нужно что-то более обширное, то похоже, что вам понадобятся инструменты для обработки естественного языка. Эта статья может быть хорошей отправной точкой.
вот что-то, что работает:
"23||45||45||56||67".replace(/^((?:[0-9]+\|\|){n})([0-9]+)\|\|/,"$1$2&&")
, где n является тем меньше, чем энный канал, (конечно, Вам не нужно то первое подвыражение, если бы n = 0)
И если Вы хотели бы, чтобы функция сделала это:
function pipe_replace(str,n) {
var RE = new RegExp("^((?:[0-9]+\\|\\|){" + (n-1) + "})([0-9]+)\|\|");
return str.replace(RE,"$1$2&&");
}
function pipe_replace(str,n) {
m = 0;
return str.replace(/\|\|/g, function (x) {
//was n++ should have been m++
m++;
if (n==m) {
return "&&";
} else {
return x;
}
});
}