如何用阿拉伯语 JavaScript 数组中的两个匹配词替换两个词?

How to replace two words with two matching words from an array in Arabic JavaScript?

我在一个数组中有英语的月份,还有一个数组中的星期几。

我想用匹配数组索引中的阿拉伯语替换英语。这是我的代码。干净简单,但它不起作用。我正在使用两个替换。

// English
var en_months = ['January','February','March','April','May','June','July','August','September','October','November','December'];
var en_days = ['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday']

// Arabic
var ar_months = ['كانون الثاني','شباط','آذار','نيسان','أيار','حزيران','تموز','آب','أيلول','تشرين الأول','تشرين الثاني','كانون الأول'];
var ar_days = ['الأحَد','الإثْنَين','الثَلاثاء','الأربَعاء','الخَميس','الجُمُعة','السَبْت']


// GO FOR IT
jQuery("span.date").text(function(i, val) {
    return val.replace(en_months, ar_months);
    return val.replace(en_days, ar_days);
});

这是跨度。 <span class="date">Wednesday, October 7th, 2015</span>页面上有几个。

对于替换你可以使用RegExp,在RegExp你可以将模式设置为字符串,我在我的例子中已经完成,我将en_months转换为字符串.join 方法,您还可以看到 indexOf return 是可以找到给定元素的第一个索引,例如,如果 "October" 数组中有它 returns 9,然后通过这个索引,我从 ar_monthsar_days 和 return 从 .replace 方法

中获取元素

// English
var en_months = ['January','February','March','April','May','June','July','August','September','October','November','December'];

var en_days = ['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday']

// Arabic
var ar_months = ['كانون الثاني','شباط','آذار','نيسان','أيار','حزيران','تموز','آب','أيلول','تشرين الأول','تشرين الثاني','كانون الأول'];
var ar_days = ['الأحَد','الإثْنَين','الثَلاثاء','الأربَعاء','الخَميس','الجُمُعة','السَبْت']

// GO FOR IT
$("span.date").text(function(i, val) {
    val = val.replace(new RegExp(en_months.join('|')), function (match) {
        return ar_months[en_months.indexOf(match)] || match;
    });
    
    val = val.replace(new RegExp(en_days.join('|')), function (match) {
        return ar_days[en_days.indexOf(match)] || match;
    });
    
    return val;
});
.date {
   direction: rtl;
   display: inline-block;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<span class="date">Wednesday, October 7th, 2015</span>

您必须遍历所有可能的值并一次替换它们。
并且函数的执行在第一个 return ....

之后停止
jQuery("span.date").text(function() {
    var text = val,
        i;

    for (i = 0; i < en_months.length; i++) {
        text = text.replace(en_months[i], ar_months[i]);
    }
    for (i = 0; i < en_days.length; i++) {
        text = text.replace(en_days[i], ar_days[i]);
    }

    return text;
});

fiddle