一, 時間對象和字符串方法
1, 時間對象
使用時間對象,在不寫入參數的情況下,可以獲取電腦當前這1秒鐘的本地時間
時間對象是一個內置函數,可以直接拿過來使用,是在js底層已經定義好的
Number() 數值
String() 字符串
Boolean() 布爾
Object() 對象
Array() 數組
Function(){} 函數
Date() 時間
Error() 錯誤
RegExp()正則
2, 獲取本地時間
語法:
// var d = new Date();
獲取年月日
// 獲取年月日
var y = d.getFullYear();
// 當前月份要加 + 1 1月到12月 對應下標值是0-11
var m = d.getMonth() + 1;
var r = d.getDate();
console.log(y + '年' + m + '月' + r + '日');
時分秒
// 時分秒
var h = d.getHours(); // 小時
var f = d.getMinutes(); // 分鐘
var s = d.getSeconds(); // 秒
console.log(h + '時' + f + '分' + s + '秒');
星期
// 星期
var week = ['星期天','星期一','星期二','星期三','星期四','星期五','星期六'];
var w = d.getDay();
console.log(week[w]);
console.log(y + '年' + m + '月' + r + '日' + week[w] + h + '時' + f + '分' + s + '秒');
電子時鐘
auto(); // 解決1秒的空白
setInterval(auto, 1000);
function auto() {
// 獲取本地時間
var d = new Date(); //
// 獲取年月日
var y = d.getFullYear();
// 當前月份要加 + 1 1月到12月 對應下標值是0-11
var m = d.getMonth() + 1;
var r = d.getDate();
// 時分秒
var h = d.getHours(); // 小時
var f = d.getMinutes(); // 分鐘
var s = d.getSeconds(); // 秒
// 星期
var week = ['星期天', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六'];
var w = d.getDay();
document.querySelector('body').innerHTML = y + '年' + m + '月' + r + '日' + week[w] + h + '時' + f + '分' + s + '秒'
}
獲取特定時間
console.log(d.toLocaleString());
console.log(d.toLocaleTimeString());
console.log(d.toLocaleDateString());
時間戳
// 時間戳 就是從1970年1月1號 凌晨零點 到現在這個時間的毫秒數
console.log(d.getTime()); // 1600741855080 數值類型
// 2020年11月11號 - 2020年9月22
console.log(Date.now()); // 1600742004734
設置未來時間
// 字符串
// 月份正常輸入
var d1 = new Date('2020,11,11 11:11:11');
// console.log(d1.getTime()); //1605064271000
console.log(d1);
//直接輸入時間 月份 - 1
var d2 = new Date(2020,10,11,11,11,11);
console.log(d2);
時間計算
// 時間計算
var nowTime = new Date();
var endTime = new Date('2020,11,11 11:11:11');
var leftTime = parseInt((endTime.getTime() - nowTime.getTime()) / 1000); // 秒
console.log(leftTime / (24 * 60 * 60)); // 50
3, 秒殺倒計時
auto(); // 解決1秒的空白
setInterval(auto, 1000)
function auto() {
// 設置本地時間
var nowTime = new Date();
// 設置未來時間
var endTime = new Date('2020,11,11 11:11:11');
// 把時間轉化為時間戳,做時間的運算
var leftTime = parseInt((endTime.getTime() - nowTime.getTime()) / 1000);// 秒
// 計算 天 時 分 秒
var t = parseInt(leftTime / (24 * 60 * 60));
var h = parseInt((leftTime / (60 * 60)) % 24);
var m = parseInt((leftTime / 60) % 60);
var s = parseInt(leftTime % 60);
document.body.innerHTML = '距離活動開始還有:' + two(t) + '天' + two(h) + '時' + two(m) + '分' + two(s) + '秒';
// 如果活動結束
if (leftTime <= 0) {
document.body.innerHTML = '活動已經開始';
}
}
// 補0
function two(n){
return n >= 10 ? n : '0' + n;
}
二, 字符串對象
字符串
使用單引號或者雙引號引起來的都是字符串
1、使用字面量的方式
var str = '我愛吃大肘子';
var str = '10';
var str = "字符串"
var str = 中國; // 錯誤的
2、使用構造函數
// 使用構造函數創建字符串
var str = new String('abc');
console.log(typeof str); // object
console.log(str[0]); // 下標
console.log(str.length); // 長度
// 可以直接使用構造函數
var str1 =String('123456');
console.log(typeof str1); // string
console.log(str1[0]); // 下標
console.log(str1.length); // 長度
可以通過下標讀取字符串
var str = 'abcdefg';
console.log(str[0]); // a
console.log(str.charAt(0)); // a
console.log(str.charCodeAt(0)); // 97
1, indexOf
語法:字符串.indexOf('查找的字符',index)
'查找的字符':在某一個字符串中需要查找的單個字符或者一串字符
index:是一個number類型,代表的是查找的起始位置,代表的下標值 取值範圍 字符串的長度 - 1
如果查找到了,返回當前查找的字符在字符串中首次出現的位置(下標值)
如果沒找到,返回 -1
console.log(str.indexOf('c')); // 2
// 返回值是第一個字符的下標
console.log(str.indexOf('cd')); // 2
// 所有的字符都是需要匹配的
console.log(str.indexOf('cD')); // -1
// 第二個參數是決定查找的位置
console.log(str.indexOf('c',3)); // -1
2, 字符串去重
// 需求:去掉重複的,數字在前,字母在後
var str = '1233fddfd&3434fdsaff&454545&4545444rfdsfds&545gdsgs';
var num = ''; // 數字
var sum = ''; // 字母
// 先拿到每一個字符
for (var i = 0; i < str.length; i++) {
var v = str[i]; // 每一個字符 v = '1' v = '2'
// 數字 48 - 57
if(v.charCodeAt(0)>=48 && v.charCodeAt(0)<=57 && num.indexOf(v) == -1){
num+=v;
}
// 字母 97-122
if(v.charCodeAt(0)>=97 && v.charCodeAt(0)<=122 && sum.indexOf(v) == -1){
sum+=v;
}
}
console.log(num + sum); //12345fdsarg
3, 查找多個字符
var str = '我就小王12是我顏色小王12不一樣的小王12煙火';
// 找到所有的小王
console.log(str.indexOf('小王')); // 2
console.log(str.indexOf('小王', 4)); // 8
//循環查找
var n = str.indexOf('小王1'); // 2
while(n !==-1){
console.log(n); // 2
n = str.indexOf('小王1', n + 3);
}
// 封裝
fn(str, '小王12'); //函數調用
function fn(str, val) { // str 字符串 val 查找的字符
var n = str.indexOf(val);
while (n != -1) {
console.log(n);
n = str.indexOf(val, n + val.length);
}
}
4, 查找某個字符在字符串中出現的次數
// 查找o出現的次數
var str = 'oabcdofrghoooooooooooodefklaoqwpo';
var n = str.indexOf('o');
var num = 0; // 計數
while (n != -1) {
num++;
n = str.indexOf('o', n + 1);
}
console.log(num);
5, lastIndexOf
語法:字符串.lastIndexOf('查找的字符',起始位置)
返回值和indexOf相同
indexOf是從前往後查找
lastIndexOf是從後往前查找
// 字符串.lastIndexOf('查找的字符', 起始位置)
var str = 'abcadeafag';
console.log(str.indexOf('a')); // 0
console.log(str.lastIndexOf('j')); // -1
console.log(str.lastIndexOf('a')); // 8
console.log(str.lastIndexOf('a',6)); // 6
6, 打印文件擴展名
// 1.2.3.4.txt
// console.log(fn('1.2.3.4.txt'));
console.log(fn('老韓.liumang'));
function fn(str) {
var n = str.lastIndexOf('.'); // 7
if (n != -1) {
return str.slice(n + 1);
} else {
alert('無效的文件');
}
}
7, 字符串的截取
語法:字符串.substring(起始位置,結束位置)
// 注意:包含開始 不包含結束
var str = 'abcdefg';
// 一個參數的時候,從當前位置一直到結束
console.log(str.substring(2)); //cdefg
// 當兩個參數的時候,從開始位置到結束位置
console.log(str.substring(2,5)); // cde
// 當第一個參數大於第二個參數的時候,會自動交換位置
console.log(str.substring(5,2)); // cde
// 當第一個參數為負數的時候,會默認轉換為 0
console.log(str.substring(-2,5)); // abcde
// 當第二個參數為負數的時候,默認轉換為 0 然後在自動交換位置
console.log(str.substring(5,-2)); // abcde
8, 語法:字符串.slice(起始位置,結束位置)
// 注意;包含開始 不包含結束
var str = 'abcdefg';
// 當一個參數的時候,從當前位置截取到末尾
console.log(str.slice(2)); // cdefg
// 當兩個參數的時候,從起始位置截取到結束位置
console.log(str.slice(2,6)); //
// 當第一個參數大於第二個參數的時候,不會自動交換位置
console.log(str.slice(6,2)); // 空
// 當第一個參數為負數的時候 起始位置的值 = 字符串的長度 + 負數
console.log(str.slice(-3,6)); // ef
// 當第二個參數為負數的時候 起始位置的值 = 字符串的長度 + 負數
// 如果第二個參數小於第一個參數 不會自動交換為
console.log(str.slice(6,-3)); //
9, 語法:字符串.substr(起始位置,截取的長度)
var str = 'abcdefg';
// 如果是一個參數,從當前位置截取到末尾
console.log(str.substr(2)); // cdefg
// 第二個參數是截取的長度
console.log(str.substr(2,5)); // cdefg
案例 - 展開收縮
// 獲取元素
var span = document.getElementsByTagName('span')[0];
var a = document.getElementsByTagName('a')[0];
var text = span.innerHTML; // 保存原數據
var tag = true; // 展開
// 添加事件
a.onclick = function () {
if (tag == true) {
span.innerHTML = span.innerHTML.substring(0, 18) + '...';
a.innerHTML = '展開';
tag = false;
} else {
span.innerHTML = text + '...';
a.innerHTML = '收縮';
tag = true;
}
}
10, 字符串的切割
語法:字符串.split(切割的字符)
把字符串切割長數組,並返回這個數組
var str = '2020-9-22';
console.log(str.split('-'));
console.log(str.split(''));
console.log(str.split());
// 語法:數組.join(標識符) 把數組轉換成字符串
var arr = ['劉備','張飛','關羽'];
console.log( typeof arr.join(','));
console.log(arr.join(''));
console.log(arr.join());
11, 替換內容
var str = '我是帥哥';
var arr = str.split('是'); // ["我", "帥哥"]
var str1 = arr.join('不是');
console.log(str1);
12, 查找替換
// 獲取元素
var pt = document.getElementsByTagName('input');
var div = document.getElementById('div1');
var text = div.innerHTML; // 保存原始數據
// 添加事件
pt[2].onclick = function(){
// 獲取輸入框的內容
var v1 = pt[0].value;
var v2 = pt[1].value;
// 分割字符串
var arr = text.split(v1); // arr = [,'']
// 當第一個框有內容 第二個框內內容
if(v1 && !v2){
// 查找
div.innerHTML = arr.join('<span>' + v1 + '</span>');
}else if(v1 && v2){
// 替換
div.innerHTML = arr.join('<span>' + v2 + '</span>');
}
}
13, 去掉字符左右的空格
var str = ' 字符 ';
console.log(str);
console.log(str.trim());
14, 轉換大小寫
'abc'.toUpperCase() // 大寫
"ABC"
"ABC".toLowerCase() // 小寫
"abc"
15, 替換字符
語法:字符串.replace('被替換的字符','替換的字符')
var str = '138999999999';
console.log(str.replace('999999999','************'));