一邊學習前端,一邊經過博客的形式本身總結一些東西,固然也但願幫助一些和我同樣開始學前端的小夥伴。php
若是出現錯誤,請在評論中指出,我也好本身糾正本身的錯誤前端
author: thomaszhou正則表達式
字符串操做
編寫函數把URL參數解析爲一個對象
ar url = "http://www.taobao.com/index.php?key0=0&key1=1&key2=2.............";
var obj = parseQueryString(url);
console.log(obj);// {key0: "0", key1: "1", key2: "2............."}
function parseQueryString(argu){
var str = argu.split('?')[1];
var result = {};
var temp = str.split('&');
for(var i=0; i<temp.length; i++)
{
var temp2 = temp[i].split('=');
result[temp2[0]] = temp2[1];
}
return result;
}
複製代碼
首字母大寫
var str1 = 'I believe I am the best';
function trans1(str1) {
var arr = str1.toLowerCase().split(' ');
for (var i in arr) {
arr[i] = arr[i].charAt(0).toUpperCase() + arr[i].slice(1);
}
return arr.join(' ');
}
console.log(trans1(str1));//I Believe I Am The Best
複製代碼
var str1 = 'I believe I am the best';
function trans1(str1) {
var arr = str1.toLowerCase().split(' ');
for (var i in arr) {
arr[i] = arr[i].replace(arr[i].charAt(0),arr[i].charAt(0).toUpperCase());
}
return arr.join(' ');
}
console.log(trans1(str1));
複製代碼
// /\w\S*/g匹配每個單詞,其實相似於字符串的數組分解
var str1 = 'I believe I am the best';
function trans1(str1) {
return str1.replace(/\w\S*/g, function (arr) {
return arr.charAt(0).toUpperCase() + arr.slice(1).toLowerCase();
});
}
console.log(trans1(str1));
複製代碼
var str1 = 'I believe I am the best';
function trans1(str1) {
return str.toLowerCase().replace(/( |^)[a-z]/g, (L) => L.toUpperCase());
}
console.log(trans1(str1));
複製代碼
子模版匹配
從字符串中找到某個子字符串(用到indexof,substring,join)數組
var str2 = 'asdasfsdfasd1zhou1fsf'
var target = 'zhou'
var x = str2.indexOf(target)
var result1 = str2.substring(0, x)
// var result1 = str2.substr(start,length)是從start開始,街區length個字符
var result2 = str2.substring(x + target.length, str2.length)
// console.log(typeof string) string
var result = result1 + result2
// 不建議用match()
// var match = str2.match(target)[0]
// console.log(match)匹配到第一個值
console.log(result)
複製代碼
字符和數字互換
var n = 100;
var n_as_string = n + "";
複製代碼
var string_value = String(number);
複製代碼
string_value = number.toString();
複製代碼
Number對象的(基本的數字轉換爲Number對象,以即可以調用這個方法)toString()方法有一個可選的參數,該參數用來指定轉換的基數。若是不指定這個參數,轉換會以10爲基數進行。然而,也能夠按照其餘的基數(2到36之間的數)來轉換數字。var n = 17;
binary_string = n.toString(2); // "10001"
octal_string = "0" + n.toString(8); // "021"
hex_string = "0x" + n.toString(16); // "0x11"
複製代碼
var n = 123456.789;
n.toFixed(0); // "123457"
n.toFixed(1); // "123456.8"
複製代碼
var n = 123456.789;
n.toExponential(0); // "1e+5"
n.toExponential(1); // "1.2e+5"
複製代碼
var number = Number(string_value);
Number(false) 0
Number(true) 1
Number(undefined) NaN
Number(null) 0
Number( "5.5 ") 5.5
Number( "56 ") 56
Number( "5.6.7 ") NaN
Number(new Object()) NaN
Number(100) 100
複製代碼
parseInt("3 blind mice"); // Returns 3
parseInt("12.34"); // Returns 12
parseInt("0xFF"); // Returns 255
parseInt("11", 2); // Returns 3 (1 * 2 + 1)
parseInt("ff", 16); // Returns 255 (15 * 16 + 15)
parseInt("zz", 36); // Returns 1295 (35 * 36 + 35)
若是十進制數包含前導0,那麼最好採用基數10,這樣纔不會意外地獲得八進制的值
parseInt("010"); //returns 8 默認八進制
parseInt("077", 8); // Returns 63 (7 * 8 + 7)
parseInt("077", 10); // Returns 77 (7 * 10 + 7)
複製代碼
parseFloat("3.14 meters"); // Returns 3.14
parseFloat("1234blue"); //returns 1234.0
parseFloat("0xA"); //returns NaN
parseFloat("22.5"); //returns 22.5
parseFloat("22.34.5"); //returns 22.34
parseFloat("0908"); //returns 908
parseFloat("blue"); //returns NaN
若是parseInt()和parseFloat()不可以把指定的字符串轉換爲數字,它們就會返回NaN:
parseInt(''eleven"); // Returns Nan parseFloat("$72.47"); // Returns NaN 複製代碼
Boolean(""); //false – empty string
Boolean("hi"); //true – non-empty string
Boolean(100); //true – non-zero number
Boolean(null); //false - null
Boolean(0); //false - zero
Boolean(new Object()); //true – object
Boolean(undefined) // false
複製代碼
var str = '12.345'// 有效
var str = '123.4.4'//NaN
var str = '12r3'//NaN
var str= '012.345 ';
var x = str-0;
x = x*1;
複製代碼
parseInt(5/2)
Math.ceil(5/2)
Math.floor(5/2)
Math.round(5/2)
傳入字符串或者2位以上的數字,每一個字符或者單個數字ascii碼減10
function toMD5(arg){
var str = [];
str = arg.split('');
len = str.length;
for(var i = 0; i < len; i++){
//str.charCodeAt() 將字符str變成ascii碼
//String.formCharCode(str) 將ascii碼str變成字符
str[i] = String.fromCharCode(str[i].charCodeAt() - 10);
}
return str;
}
複製代碼
重複字符串
這裏所說的重複字符串是指對所給的字符串根據第一個數字參數重複次數bash
repeatStringNumTimes("*", 3)返回***
repeatStringNumTimes("abc", -2)
複製代碼
function fn1(str, num) {
str1 = '';
while (num > 0) {
str1 += str;
num--;
}
return str1;
}
console.log(fn1('a',4));
複製代碼
function fn2(str, num) {
arr = [];
for (var i = 0; i < num; i++) {
arr.push(str);
}
return arr.join('');
}
console.log(fn2('a',4));
複製代碼
function fn3(str, num) {
// 若是重複兩個a,那須要三個'',
// ''+'a'+''+'a'+'';
return num < 0 ? '': new Array(num + 1).join(str);
}
console.log(fn3('a',4));
複製代碼
//遞歸
function repeat(str, num) {
if (num === 0) {
return '';
}
if (num === 1){
return str;
}else{
return str + repeat(str, num-1);
}
}
console.log(repeat('b', 4));
複製代碼
檢測字符串b內的字符是否都在字符串a中出現
對一個包含兩個元素的數組,檢測數組中的第二個元素的全部字母是否都在第一個元素中出現過,若是出現過,返回的是true,不然返回的是false。(其中忽略大小寫)函數
var arr = ['hello world','eowl'];
var arr1 = ['hello world','howa'];
function mutation(arr) {
var str1 = arr[0].toLowerCase().split(''),
str2 = arr[1].toLowerCase().split('');
console.log(str1);
console.log(str2);
var value = [];//存儲匹配的字符的下標
for (var i = 0, len = str2.length; i < len; i++) {
var temp = str1.indexOf(str2[i]);
value.push(temp);
if (temp === -1) {
console.log(value);
//arr1爲參數value值(匹配錯誤):[0,4,6,-1]
console.log('false');
return false;
}
}
console.log(value);//匹配正確時:[1,4,6,2]
console.log('true');
return true;
}
mutation(arr);
複製代碼