使用JavaScript更改字符串中字符的顺序

时间:2019-02-16 11:52:20

标签: javascript string api

我正在从表单中捕获日期作为字符串,并将其传递给API-Request-URL。

日期字符串的格式为: 16 02 2019 但是API仅接受以下格式的日期字符串: 2019 02 16

基本上,在我的字符串中,我需要将前2个字符的位置更改为后4个字符的位置。

我已按照以下步骤解决了该问题:

let date = e.target.elements.date.value; // 16022019

const dateFirst = date.slice(0, 2);
const dateMiddle = date.slice(2, 4);
const dateLast = date.slice(4, 8);
date = `${dateLast}${dateMiddle}${dateFirst}`; // 20190216

但是我不确定这是否是一个好的解决方案。有没有更好的方法来达到相同的结果?

6 个答案:

答案 0 :(得分:4)

我认为您的方法没有任何问题。如果您想知道替代方法,可以尝试一下。

这使用正则表达式捕获所需宽度的数字,然后捕获所需位置的数字。

let str = `16022019`
console.log(str.replace(/(\d{2})(\d{2})(\d{4})/,"$3$2$1"))

答案 1 :(得分:1)

如何映射位置:

[/*y*/ 4, 6, /*m*/ 2, /*d*/ 0].reduce((acc, p) => acc + date.slice(p, p + 2), "")

答案 2 :(得分:1)

使用子字符串

var a = '16022019';
console.log(a.substring(a.length - 4, a.length) + a.substring(2, 4) + a.substring(0, 2))

使用substr

var a = '16022019';
console.log(a.substr(a.length-4,4)+a.substr(2,2)+a.substr(0,2))

答案 3 :(得分:1)

这是处理日期的一种方式:

function yyyymmdd() {
  var x = new Date();
  var y = x.getFullYear().toString();
  var m = (x.getMonth() + 1).toString();
  var d = x.getDate().toString();
  (d.length == 1) && (d = '0' + d);
  (m.length == 1) && (m = '0' + m);
  var yyyymmdd = y + m + d;
  return yyyymmdd;
}

console.log(yyyymmdd("16022019")) // outputs 20190216

参考:https://codereview.stackexchange.com/q/184459

答案 4 :(得分:1)

您还可以通过使用Array#reverse和Array#join来执行类似的操作。

const data = "16022019"

const res = data.split(/(\d{2})(\d{2})(\d{4})/).reverse().join("");

console.log(res);

答案 5 :(得分:1)

您也可以使用 destructuring assignment rest parameter 语法。

const str = `16022019`;
[d, d1, m, m1, ...year] = str.split("");
const dateStr = [...year,m,m1,d,d1].join("");
console.log(dateStr);