FazBrowse GitHub Viewer
|
Trending
|
URL:
|
Home
Tools:
[Download Repo ZIP]
[View Raw Code]
[Original HTTPS Page]
JavaScript201708/WEEK3/REPLACE.js at master · code-brewer/JavaScript201708 · GitHub
code-brewer
JavaScript201708
Repository navigation
Code
Pull requests
Actions
Projects
Wiki
Security and quality
Insights
Expand file tree
Breadcrumbs
JavaScript201708
/
WEEK3
/
REPLACE.js
Copy path
More file actions
More file actions
Latest commit
History
History
History
91 lines (82 loc) · 3.89 KB
Breadcrumbs
JavaScript201708
/
WEEK3
/
REPLACE.js
Copy path
File metadata and controls
91 lines (82 loc) · 3.89 KB
Raw
Copy raw file
Download raw file
Open symbols panel
Edit and raw actions
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
// var str = ' zhufeng ';
// str = str.replace(/^ +| +$/g, '');
// console.log(str);
// var str = 'zhufeng2017zhufeng2018';
// // str = str.replace('zhufeng', 'zhufengpeixun');
// // str = str.replace('zhufeng', 'zhufengpeixun');
// str = str.replace(/zhufeng/g, 'zhufengpeixun');
// console.log(str);
// var str = 'zhufeng2017zhufeng2018';
// //->当REPLACE的第一项是个正则,第二项是个函数的时候,正则能在处理的字符串中匹配捕获几次,我们的函数就会被触发执行几次
// str = str.replace(/zhufeng/g, function () {
// //->不仅仅会把函数执行,而且把每一次捕获的内容作为实参传递给当前函数,在函数的ARG(ARGUMENTS)中我们可以获取到 =>传递的内容和执行EXEC捕获的内容非常的相似
//
// return '@';//->在函数中返回的是啥,相当于把正则本次捕获的结果替换成啥
// });
// console.log(str);
//--------------------------------------
//=>把所有单词的首字母大写
// var str = 'my name is zhou xiao tian,i am 28 years old!';
// var reg = /\b[a-zA-Z]+\b/g; =>处理不了‘-’
// var reg = /(^| )[a-zA-Z]+( |$)/g; =>需要把之前字符串中的一个空格替换成两个
// str = str.replace(/ /g, ' ');
// var reg = /(?:^| )([a-zA-Z]+)(?: |$)/g;
// str = str.replace(reg, function () {
// console.log(arguments[1]);//->每一次捕获的时候,第一个小分组单独捕获的内容(所有加上了?:的分组,不在分组序号计算之内)
// });
// var reg = /[a-z]+/ig;
// str = str.replace(reg, function (res) {
// //->arguments[0]:当前本次正则捕获的结果 <=> 形参RES存储的也是这个东西
// var a = res.substr(0, 1).toUpperCase();//->第一个字母大写
// var b = res.substr(1);//->除了第一个以外的其余字母
// return a + b;
// });
// console.log(str);
// var reg = /([a-z])([a-z]*)/ig;
// str = str.replace(reg, function (bigVal, firVal, twoVal) {
// //->bigVal:arguments[0]
// //->firVal:arguments[1]
// //...
// return firVal.toUpperCase() + twoVal;
// });
// console.log(str);
//-----------------------------------------
// var str = 'my name is {0},i am {1} years old,i can {2}';
// var ary = ['TOM', 25, 'JS'];
// //=>{0} : ATY[0] TOM
// //=>{1} : ARY[1] 25
// //...
// str = str.replace(/\{(\d+)\}/g, function (val, fir) {
// return ary[fir];
// });
// console.log(str);
//------------------------------------------
//=>时间字符串格式化:在一个时间字符串中获取到具体的日期,然后拼凑成我们所需要的时间格式
// var str = '2017/8/13 20:11:5';//=>'2017年08月13日 20时11分05秒'、'08-13 20:11'...
//
// //->获取到需要的数字,存储在一个数组中
// // console.log('2017-8-13 20:11:5'.split(/(?:-|\s+|:|\/)/g)); =>可以实现,但是不好的地方是以后自付串中的分隔符变了,正则也要跟着改一下
// var ary = str.match(/\d+/g);
//
// //->设定一个我们自己需要展示的模板,按照模板字符串渲染的原理把最后的结果输出
// var template = '{0}年{1}月{2}日 {3}时{4}分{5}秒';
// template = template.replace(/\{(\d+)\}/g, function () {
// var index = arguments[1],
// val = ary[index] || 0;//->通过索引到数组中获取到对应的内容,如果没有对应的内容,让其默认值为零
// return val < 10 ? '0' + val : val;//->如果VAL不足十位,我们在前面补零
// });
// console.log(template);
String
.
prototype
.
myFormatTime
=
function
myFormatTime
(
template
)
{
//->this:str
var
ary
=
this
.
match
(
/
\d
+
/
g
)
;
template
=
template
||
'{0}年{1}月{2}日 {3}时{4}分{5}秒'
;
template
=
template
.
replace
(
/
\{
(
\d
+
)
\}
/
g
,
function
(
)
{
var
val
=
ary
[
arguments
[
1
]
]
||
0
;
return
val
.
length
<
2
?
'0'
+
val
:
val
;
}
)
;
return
template
;
}
;
var
str
=
'2017/8/13 00:12:13'
;
console
.
log
(
str
.
myFormatTime
(
)
)
;
console
.
log
(
str
.
myFormatTime
(
'{1}-{2} {3}:{4}'
)
)
;
console
.
log
(
str
.
myFormatTime
(
'{0}年{1}月{2}日'
)
)
;
Back
|
FazBrowse Home
|
New Git URL