在Javascript中使用特定位置有条件地删除字符
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Javascript中使用特定位置有条件地删除字符相关的知识,希望对你有一定的参考价值。
这是我的数据格式:
"21/03/2019 19:18"
我面临的问题是,如果我正在处理日期或时间,那么月份就会出现问题(它有03而不是3)。我正在使用名为date-fns的库。而且我也尝试过javascript日期对象的帮助,而不使用库,但没有运气,月份不应该在它前面零。
那么,如何删除“3”前面的“0”,还有一个问题是如何有条件地执行此操作,因为当它的Dec,我将获得数据为“21/12/2019 19:18”。因此,在这种情况下,我不应该删除“1”,因为它在前一个场景中位于“0”的相同位置。
换句话说,我想通过检查该位置或索引中是否有“1”来删除“0”,如果出现则删除else删除“0”
如何实现这一目标。
我尝试了下面的代码:
const d = new Date(2019,03,21)
但是,它说遗留错误。因此,当我删除“0”前面的“0”时它工作正常。请帮忙
我假设您将数据作为字符串返回,并且您只想从第二个数字中删除前导零?
我们可以使用.split
将字符串分解成部分,然后我们可以使用parseInt
将一些字符串部分转换为数字。这将把字符串"03"
变成数字3
function removeleadingZerosFromDateString(str) {
//Break up the date string on the slashes and whitespace, so we have an array of all the parts
var parts = str.split(//|s/);
console.log(parts);
//Assign each array item to a variable so we can see what is what
var day = parseInt(parts[0], 10);
var month = parseInt(parts[1], 10);
var year = parts[2];
var time = parts[3];
var meridian = parts[4];
return day+'/'+month+'/'+year+' '+time+' '+meridian;
}
var result = removeleadingZerosFromDateString("21/03/2019 19:18 PM");
console.log(result);
你说你正在使用约会,所以我会在这方面给出答案。
当前的1.x版本不支持以自定义格式解析字符串,但是它们将其添加到2.x,您可以使用alpha版本来尝试它。
语法是:
var date = parse(dateString, formatString, baseDate, [options]);
See the documentation for the parse
function in version 2.0.0-alpha.27
。
在你的情况下,它会是这样的:
var date = parse("21/03/2019 19:18", "MM/dd/yyyy HH:mm", new Date());
最后,如果您想使用库但不想尝试使用alpha,您可以等待Date-fns 2.0成为最终版,或者您可以尝试Luxon或Moment - 两者都已经具有此功能(虽然Moment使用略有不同的令牌格式"MM/DD/YYYY HH:mm"
)。
以上是关于在Javascript中使用特定位置有条件地删除字符的主要内容,如果未能解决你的问题,请参考以下文章