字符串的概念和定義
字符串就是一串字符,由雙(單)引號(hào)括起來(lái)。
字符串是 JavaScript的一種基本的數(shù)據(jù)類型。
1、var str=‘親’;? ? //基本類型
定義一個(gè)字符串變量str,內(nèi)容為‘親
2、var str = new String(“hello”);? ? ? //引用類型
定義一個(gè)字符串變量str,內(nèi)容為hello,
注意此刻str為object(對(duì)象)類型
用new產(chǎn)生的變量都是引用類型的變量,也叫對(duì)象。
3、var str = String(‘hello’);
對(duì)象只是一種特殊的數(shù)據(jù)類型。對(duì)象擁有屬性和方法。
基本類型: Undefined / Boolean / Number
引用類型:Object / Array / Function / Date / String …….
字符串的概念和定義
var s1 = new String(‘hello world’);
var s2 = String(‘hello world’);
alert(typeof s1);
alert(typeof s2);
當(dāng)String()和元素符new一起作為構(gòu)造函數(shù)使用時(shí),它返
回一個(gè)新創(chuàng)建的String對(duì)象,存放的是字符串s1的字符串表
示。
當(dāng)不用new運(yùn)算符調(diào)用String()是,它只把s2轉(zhuǎn)換成原
始的字符串,并返回轉(zhuǎn)換后的值。
字符串
字符串的屬性
字符串的屬性
length:表示字符串的長(zhǎng)度;
如 :? var str=“how are you”;
alert(str.length);
alert(str[0]); //獲取字符串中對(duì)應(yīng)下標(biāo)的字符
ECMAScript 中的字符串是不可變的;
也就是說(shuō),字符串一旦創(chuàng)建,它們的值就不能改變。
var str = “親,包郵哦”;
str[0] = “唉”;? //不會(huì)改變
要改變某個(gè)變量保存的字符串,首先要銷毀原來(lái)的字符串,然后再用
另一個(gè)包含新值的字符串填充該變量,
var str1 =? “Hello”;
str1 = str1+” world!”;
字符串的方法
big()? ? ? 用大號(hào)字體顯示字符串
bold()? ? ? 使用粗體顯示字符串
fixed()? ? 以打字機(jī)文本顯示字符串
strike()? ? 使用刪除線來(lái)顯示字符串
fontcolor(“#00f”)? 使用指定顏色來(lái)顯示字符串
fontsize(22)? ? 使用指定尺寸來(lái)顯示字符串
link()? ? ? 將字符串顯示為鏈接
sub()? ? ? 把字符串顯示為下標(biāo)
sup()? ? ? 把字符串顯示為上標(biāo)
字符串
字符串的方法
字符串的函數(shù)(方法)--字符的獲取方法
str.charAt(3)? ? //獲取下標(biāo)為3的字符
str.charCodeAt(3)? //獲取下標(biāo)為3的字符的編碼(ASCII碼)
String.fromCharCode(94)? ? //ASCII編碼轉(zhuǎn)換成字符
該方法是 String 的靜態(tài)方法,所以用String調(diào)用,
如:var str = String.fromCharCode(98,99); 可傳入多個(gè)參數(shù)
ASCII(American Standard Code for Information Interchange,
美國(guó)標(biāo)準(zhǔn)信息交換代碼)
字符串
字符串的方法
nstr.concat()? 連接字符串
var str1 = "hello";
var str2 = str1.concat(" world");
字符串的查找方法
n str.indexOf("abc") 查找字符串第一次出現(xiàn)的位置
var str = "abcdabcd";
var subStr = "bcd";
var index = str.indexOf(subStr);
n str.lastIndexOf("abc")? 查找字符串最后一次出現(xiàn)的位置, 如果沒(méi)
找到? 返回-1
var index = str.lastIndexOf(“abc”);
字符串
字符串的方法
n str.search()正則匹配 (返回第一次出現(xiàn)的位置)
var str = "Abcdabcd";
var index = str.search(/abc/gi);
注: g表示進(jìn)行全局匹配,i表示匹配的時(shí)候忽略大小寫
n str.replace()替換字符串
var str = "how are Are are you!";
var newStr = str.replace("are", "old are");
這里的替換只能執(zhí)行一次,不能夠進(jìn)行全局匹配,如果需要全局匹配
,則應(yīng)使用正則表達(dá)式: str.replace(/are/gi, "old are")
字符串
1、將下面的字符串str的敏感字符*用空字符串””替換; (要
正確表示*得轉(zhuǎn)義成:\*)
2、將str的空格用空字符串””替換;
var str = "H e? l? ** l? ? o? ? Wo r
L d? !";
3、隨機(jī)產(chǎn)生一個(gè)四位數(shù)的驗(yàn)證碼(純數(shù)字(0-9)生成一個(gè)
字符串)? Math.random()
字符串
字符串的常用函數(shù)(重要)
substring(start,end); //截取字符串范圍是[start,? end)
var? str =? “Hello world!”;
alert (str.substring(2,5));
注: 如果只有一個(gè)參數(shù), 則表示到字符串最后
split(separator, howmany)—根據(jù)分隔符、拆分成數(shù)組
separator(字符串或正則表達(dá)式)
howmany(可以指定返回的數(shù)組的最大長(zhǎng)度, 可以省略)
【注】如果空字符串(“”)用作separator,那么stringObject中的每個(gè)字
符之間都會(huì)被分割。
toLowerCase() 方法用于把字符串轉(zhuǎn)換成小寫
toUpperCase() 方法用于把字符串轉(zhuǎn)換成大寫
字符串
示例
1. 去掉字符串123@zh@qq.com中的@;
2.? 任意給定的一串字符,統(tǒng)計(jì)字符串里面的大寫字母和
小寫字母的個(gè)數(shù)
3.? https://www.baidu.com/s?name=avery&age=20&sex=
male, 取出name, age和sex的值
練習(xí)
1.? 已知有兩個(gè)字符串str1 = ‘hello’ , str2 = ‘world’,將兩個(gè)
字符串組成一個(gè);
2.? 已知字符串str = “I love BeiJing”,找出love的范圍
3.? 已知字符串str = “I hate BeiJing!”,提取第3個(gè)字符到第5
個(gè)字符
4.? 將字符串str = “When I was young, I love a girl in
neighbor class.”中,從young提取到girl。但是不許數(shù)
Math
Math對(duì)象
pMath對(duì)象
nMath對(duì)象用于執(zhí)行數(shù)學(xué)任務(wù)
pMath對(duì)象的常用函數(shù)
nMath.round(3.6)? ? //四舍五入
nMath.random()? ? ? ? ? ? ? ? //返回0-1之間的隨機(jī)數(shù)
nMath.max(num1, num2)? //返回較大的數(shù)
nMath.min(num1, num2)? //返回較小的數(shù)
nMath.abs(num)? ? //絕對(duì)值
nMath.ceil(19.3)? ? //向上取整
nMath.floor(11.8)? ? //向下取整
nMath.pow(x,y)? ? ? //x的y次方
nMath.sqrt(num)? ? //開平方
Math
練習(xí)
1, 獲取65-90中的隨機(jī)數(shù), 并將該數(shù)當(dāng)成ASCII
碼,轉(zhuǎn)換成字母
Math
綜合練習(xí)
練習(xí):
給定一個(gè)字符串(包含數(shù)字,大寫字母和小寫字母)例如:
“abaasdFFggs3545jjkkGfDDsssss3444343”;問(wèn)題如下:
1、字符串的長(zhǎng)度;
2、取出指定下標(biāo)位置的字符:0,3,5,9;
3、查找指定字符是否在以上字符串中存在:c;
4、替換指定的字符: 將g替換為22,ss替換為b;
5、截取指定開始下標(biāo)位置到結(jié)束位置的字符串: 取得3--8(包含8)
的字符串;
6、遍歷字符串,并將遍歷出的字母兩頭添加符號(hào)“@”輸出至當(dāng)前
的文檔頁(yè)面, 數(shù)字按原樣顯示,每行5個(gè);
字符串
作 業(yè)
必做:
1.? 注冊(cè)頁(yè)面的簡(jiǎn)單數(shù)據(jù)校驗(yàn)
1.? 用戶名不可以用數(shù)字開頭
2.? 用戶名長(zhǎng)度不低于6,不高于20
3.? 密碼不能為空
4.? 輸入框中要有默認(rèn)提示
5.? 所有輸入框不能為空,并數(shù)據(jù)合法,點(diǎn)擊提交才可以正確提交
表單數(shù)據(jù)
2.? 字母數(shù)字組合驗(yàn)證碼(四位)
?? onblur :? 失去焦點(diǎn)事件
?? placeholder :? 提示文本(占位文本)
作業(yè)2
1. 找出出現(xiàn)最多的字母,找出字符串中出現(xiàn)次數(shù)最多的字母,將該
字母串中出現(xiàn)次數(shù)最多的字母,將該字母和字母出現(xiàn)的次數(shù)拼接成一個(gè)
新字符串,返回新字符串
傳入:” WelcomeToQianfeng”;
返回:”e3”;? (要求編寫成函數(shù))
2. 將字符中單詞用空格隔開
已知傳入的字符串中只有字母,每個(gè)單詞的首字母大寫,請(qǐng)將每個(gè)
單詞用空格隔開,只保留一個(gè)單詞的首字母大寫
傳入:”HelloMyWorld”
返回:”Hello my world”
3. 已知一個(gè)字符串對(duì)象中,英語(yǔ)單詞用各種非字母字符分割,統(tǒng)計(jì)
單詞的個(gè)數(shù)
傳入: “Yes,she**is%%my@love.”
作業(yè)3
1.? 將字符串按照單詞進(jìn)行逆序,空格作為劃分單詞的唯一條件
傳入:”Welome to Beijing”改為 “Beijing to Welcome”
2.? 對(duì)稱數(shù)組
傳入一個(gè)數(shù)組,起元素類型與個(gè)數(shù)皆未知,返回新數(shù)組,由原數(shù)組
的元素正序反序拼接而成
傳入[“One”, “Two”,”Three”]返回[“One”,? “Two”, “Three”,”Three”,”Two”, “One”]
3. 實(shí)現(xiàn)函數(shù),查找子串出現(xiàn)的次數(shù),返回字符串str中出現(xiàn)substring的次數(shù)
傳入:”abcabcabc”, “abc”;? 返回:3
4. 已知千鋒郵箱的用戶名只能由數(shù)字字母下劃線組成,域名為@1000phone.com
,判斷一個(gè)字符串是否是千鋒郵箱,是返回true,不是返回false。
mail@1000phone.com? 是
$mail@1000phone.com? 不是
mail@1000phone.comp? 不是