我在数组中有几个月的英语,也有数组中的星期几。
我想在匹配的数组索引中用英语替换英语。这是我的代码。干净简单但不起作用。我正在使用两个替换。
// 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>
页面上有一些。
答案 0 :(得分:4)
对于替换,您可以使用RegExp
,在RegExp
中您可以将模式设置为字符串,我已在我的示例中完成,我将en_months
转换为字符串.join
1}}方法,你也可以看到indexOf
返回可以找到给定元素的第一个索引,例如,如果&#34; 10月&#34;在数组中它返回9,然后通过这个索引从ar_months
或ar_days
获取元素并从.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;
});
&#13;
.date {
direction: rtl;
display: inline-block;
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<span class="date">Wednesday, October 7th, 2015</span>
&#13;
答案 1 :(得分:0)
您必须迭代所有可能的值并一次更换一个
并且在第一个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;
});