在javascript中如何添加或删除's'来自数量字符串

In javascript how to add or remove 's' from a quantity string

本文关键字:字符串 删除 javascript 何添加 添加      更新时间:2023-09-26

我有一个从数据库(如7 Months 5 Days)返回的字符串。

问题是,当它是1个月1日时,它仍然显示为1 Months 1 Days,请注意MonthsDays中的字母s

我不允许使用像1 Month(s) 1 Day(s)这样的括号。

请告诉我,如果不到2天,我如何才能提出一个条件,即删除s

以下内容不起作用。我该怎么办?

JS-

var YYMM = '1 Months 1 Days'; // simulated data.
if (YYMM.indexOf('1') > -1) {
  YYMM.replace('s', '');
  console.log('YYMM is: ', YYMM);
}

非常感谢

单个带有replace的regexp就可以做到:

var reg = /'b1'b's(Month|Day)s/g;
alert( '1 Months 1 Days'.replace(reg, '1 $1') );
alert( '11 Months 21 Days'.replace(reg, '1 $1') );
alert( '12 Months 1 Days'.replace(reg, '1 $1') );

这只是一种情况,所以:

'1 Months 1 Days'.replace(/'b1 Months/, '1 Month')
                 .replace(/'b1 Days/, '1 Day');

将起作用。

document.getElementById('div1').textContent 
    = '1 Months 1 Days'.replace(/'b1 Months/, '1 Month')
                       .replace(/'b1 Days/, '1 Day');
document.getElementById('div2').textContent 
    = '12 Months 21 Days'.replace(/'b1 Months/, '1 Month')
                       .replace(/'b1 Days/, '1 Day');
1 Months 1 Days -->
<div id="div1"></div>
12 Months 21 Days -->
<div id="div2"></div>

只需拆分字符串并在更改字符串后进行concat,就像这个

var YYMM = '1 Months 1 Days';
YYMM = YYMM.split(' ');
if (parseInt(YYMM[0], 10) < 2) {
    YYMM[1] = 'Month';
}
if (parseInt(YYMM[2], 10) < 2) {
    YYMM[3] = 'Day';
}
YYMM = YYMM.join(' ');
console.log(YYMM);
# 1 Month 1 Day

这样做的好处很容易理解。但是你可以用三元运算符来写if条件,比如这个

YYMM[1] = 'Month' + (parseInt(YYMM[0], 10) < 2 ? '' : 's');
YYMM[3] = 'Day'   + (parseInt(YYMM[2], 10) < 2 ? '' : 's');

你可以试试这样的东西:

var str = '1 Months 3 Days';
var parts = str.split(' ');
if(parts[0] === '1') {
  parts[1] = parts[1].slice(0, -1);
}
if(parts[2] === '1') {
  parts[3] = parts[3].slice(0, -1);
}
var result = parts.join(' ');