Замените строку несколько раз, используя регулярное выражение - PullRequest
0 голосов
/ 20 июля 2010

например у нас дата 12 мая 2010 года

<cfset may_12_2010 = CreateDate(2010, 5, 12)>

используя DateFormat функцию, мы можем использовать

DateFormat(may_12_2010, "mmmm m dddd d yyyy")

который покажет May 5 Wednesday 12 2010

если по какой-то причине я не могу использовать функцию DateFormat, как мы можем показать те же результаты (с той же маской) в приведенном выше примере?

Код:

<cfset may_12_2010 = CreateDate(2010, 5, 12)>

<cfset mask = "mmmm m dddd d yyyy">

#DateFormat(may_12_2010, mask)#

<cfset d = DateFormat(may_12_2010, "d") />
<cfset dd = DateFormat(may_12_2010, "dd") />
<cfset ddd = DateFormat(may_12_2010, "ddd") />
<cfset dddd = DateFormat(may_12_2010, "dddd") />

<cfset m = DateFormat(may_12_2010, "m") />
<cfset mm = DateFormat(may_12_2010, "mm") />
<cfset mmm = DateFormat(may_12_2010, "mmm") />
<cfset mmmm = DateFormat(may_12_2010, "mmmm") />

<cfset yy = DateFormat(may_12_2010, "yy") />
<cfset yyyy = DateFormat(may_12_2010, "yyyy") />

<cfset stringDate = mask />

<cfset stringDate = REReplaceNoCase(stringDate, "d{4,4}", dddd, "ALL") />
<cfset stringDate = REReplaceNoCase(stringDate, "d{3,3}", ddd, "ALL") />
<cfset stringDate = REReplaceNoCase(stringDate, "d{2,2}", dd, "ALL") />
<cfset stringDate = REReplaceNoCase(stringDate, "d", d, "ALL") />

<cfset stringDate = REReplaceNoCase(stringDate, "m{4,4}", mmmm, "ALL") />
<cfset stringDate = REReplaceNoCase(stringDate, "m{3,3}", mmm, "ALL") />
<cfset stringDate = REReplaceNoCase(stringDate, "m{2,2}", mm, "ALL") />
<cfset stringDate = REReplaceNoCase(stringDate, "m", m, "ALL") />

<cfset stringDate = REReplaceNoCase(stringDate, "y{4,4}", yyyy, "ALL") />
<cfset stringDate = REReplaceNoCase(stringDate, "y{2,2}", yy, "ALL") />

<br>
#stringDate#

код выше покажет

May 5 Wednesday 12 2010
5ay 5 We12nes12ay 12 2010

спасибо

Ответы [ 2 ]

1 голос
/ 20 июля 2010

Чтобы решить вашу проблему, просто сделайте свои регулярные выражения:

<cfset stringDate = REReplaceNoCase(stringDate, "\bdddd\b" , dddd , "ALL") />
<cfset stringDate = REReplaceNoCase(stringDate, "\bddd\b"  , ddd  , "ALL") />
<cfset stringDate = REReplaceNoCase(stringDate, "\bdd\b"   , dd   , "ALL") />
<cfset stringDate = REReplaceNoCase(stringDate, "\bd\b"    , d    , "ALL") />
....

Где \b отмечает положение "границы слова" - которая является изменением между символом слова и несловесным символом, где "символ слова" равен [a-zA-Z0-9_] - и, таким образом, предотвращает символы в "среду" из соответствия.

Но на самом деле, просто используйте функцию DateFormat правильно!

0 голосов
/ 20 июля 2010

Я запутался, почему вы не можете использовать формат даты.У меня никогда не было dateformat, не принимающего значение, вы можете даже использовать строку, это не волнует.

...