gpt4 book ai didi

javascript - 实现类似于 Java/C# 的日期格式(如 "dddd/mm/yy")

转载 作者:行者123 更新时间:2023-12-03 18:53:47 37 4
gpt4 key购买 nike

总的来说,我想为接受类似于 Java/C# 格式的字符串的 JavaScript 日期值实现格式化功能:“dddd/mm/yy”等。

我当前的问题范围是 - 我有一个带有“d”的字符串。字符串可以像

'd/dd/ddd/dddd'
'dd/d/ddd'
'dddd ddd /dd'

d 之间的间隔可以是单个/多个空格或 :(冒号)或 /(斜杠)或全部(可以是一个或两个或三个字符)一次。示例:

'dd/dddd:ddd  d'
'dd:/ddd d d'

如果是

  • 一个 d,我应该用 'somestring1' 替换(意味着我有一些字符串可以替换那个特定的 d)
  • 两个d,替换为'someotherString2'
  • 三个d,替换为'someotherotherstring'
  • 四个d,替换为'someottherotrotherstring'

使用相应的间距或 :(冒号)和 /(斜线)

我正尝试为此使用正则表达式。

最佳答案

用两个替换就很简单了:

var res = "'dd/dddd:ddd  d'".replace(/d(?![^d])/g, '0')
.replace('d', '1');

它的意思是“将所有'd'后面没有'non-d'的替换为0”,然后将所有剩余的'd'替换为1。

你甚至可以用另一种方式来做:

var res = "'dd/dddd:ddd  d'".replace(/d(?=d)/g, '0')
.replace('d', '1');

意思是“将所有‘d’后面的‘d’替换为0”,然后将所有剩余的‘d’替换为1。

如果你想在替换中使用函数,你可以这样做:

var res = "'dd/dddd:ddd  d'".replace(/(d(?=d))|(d)/g, 
function(match, p1, p2) {
return p1 ? '0' : '1';
}
);

结果是一样的。我们有两个捕获组,一个用于“d”,然后是另一个“d”,另一个用于剩余的“d”。这些匹配被传递给一个函数,该函数在 p1p2 中接收捕获。显然,对于每个匹配项,只能定义其中一个捕获(p1p2)(因为它们是替代项),因此使用三元运算符 ? 我检查 p1 是否有值,然后我返回 0,否则我返回 1

对于更改后的问题

如果你想用一个字符串数组替换你可以这样做:

var replaces = [ "some1", "some2", "some3", "some4" ];

var res = "'dd/dddd:ddd d ddddd'".replace(/d+/g,
function(match) {
return match.length - 1 < replaces.length ? // check if there is a substitution
replaces[match.length - 1] : // if there is a substitution
match; // otherwise leave the d(s)
}
);

关于javascript - 实现类似于 Java/C# 的日期格式(如 "dddd/mm/yy"),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18010328/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com