转自:http://www.kqiqi.com/knowledge/program/js-string.html
String对象
length属性:获取字符串的字符个数。(无论中文字符还是英文字符都算1个字符。)
charAt(index)方法:获取指定索引位置的字符。(索引从0开始)
indexOf(‘字符串’,startIndex)方法:获取指定字符串第一次出现的位置。startIndex表示从第几个开始搜索。
split(‘分隔符’,limit);//根据分隔符将一个字符串返回为一个数组。limit表示要返回的数组的最大长度(可自定义)。
substr(startIndex,len)//从startIndex开始,截取len个字符。
substring(startIndex,stopIndex)//从startIndex开始,截取到stopIndex位置(不包括stopIndex所在的字符)。
match()、replace()、search()方法,正则表达式相关。
例子:
var uname = new String('a我不h是美女haha10086');
/*
alert(uname.length);
alert(uname.charAt(6)); //返回a,不是h,索引从0开始。
alert(uname.indexOf('h', 3)); //从索引为3的字符开始搜索h,如果在索引为3的字符前有h,也不予理会。
*/
/*
var reg = /\w+/g;
//当采用全局模式g,的时候直接把所有匹配的元素返回到一个数组当中
var result = uname.match(/\w+/g);
alert(result.length);
for (var i = 0; i < result.length; i++) {
alert(result[i]);
}
*/
/*
var reg = /^\w$/;
var reg1 = new RegExp('\\w');
*/
/*
//不要忽略这里的全局模式g,否则只能匹配第一个符合的元素
//加上g以后,可以吧所有匹配正则表达式的元素都替换
var result = uname.replace(/a/g, 'X');
alert(result);
*/
//search()方法与indexOf()方法都是返回找到字符串的第一次出现的索引,
//只是search()方法可以用正则表达式,而indexOf()只能写字符串。
var result = uname.search(/\d{5}/);
var resultIndexof = uname.indexOf('10086');
alert(result);
alert(resultIndexof);
/*
//spilt第一个参数是分隔符,第二个参数是要返回的最大元素个数。
var result = uname.split(',', 3);
alert(result.length);
for (var i = 0; i < result.length; i++) {
alert(result[i]);
}
*/
/*
//substr从索引为2的字符开始,截取3个字符,索引是从零开始的。
var result1 = uname.substr(2, 3);
alert(result1);
*/
//substring从第2个索引开始截取,截取到第3个索引之前。(不包括第3个索引的字符)
var result2 = uname.substring(2, 3);
alert(result2);
Array对象
JavaScript中的Array对象就是数组,首先是一个动态数组,而且是一个像C#中数组、ArrayList、Hashtable等的超强综合体。
数组的使用方式:
var names = new Array();//无需初始化长度,动态
names[0] = "tom";
names[1] = "jerry";
names[2] = "lily";
循环遍历数组(for循环):
for (var i = 0; i < names.length; i++) {
alert(names[i]);
}
循环遍历数组(for in循环):类似于c#中的foreach
for (var i in names) {
alert(names[i]);//如果直接输出i是什么?
}
使用for in循环可以遍历对象的所有属性。
for in循环其实遍历的还是key。
数组的其他几种声明方式:
new Array();
new Array(size);
new Array(element0, element0, ..., elementn);
var arr = ['China', 2008, true, 'Hello'];
arr[0]?'China'
arr[1]?2008
…
JS中的Dictionary
JS中的Array是一个宝贝,不仅是一个数组,还是一个Dictionary,还是一个Stack(栈集合,不能是Dictionary)。
var pinyins = new Array();
pinyins["人"] = "ren";
pinyins["口"] = "kou";
pinyins["手"] = "shou";
alert(pinyins["人"]);
alert(pinyins.人);
字典风格的简化创建方式:
var arr = {“人”:”ren”,“口”:”kou”};//json格式。
像Hashtable、Dictionary那样用,而且像它们一样效率高。
不能直接用for循环遍历,需要用for in循环。
只要有了Array你就同时拥有了数组、List、Hashtable,它就是JavaScript中的要你命三千,价格只要998.
var arr = new Array();
arr[0] = "tom";
arr[1] = "jim";
for (var i in arr) {//打印出来的是0tom、1jim证明了数组用法是Dictionary用法的一个特例而已。
alert(i+arr[i]);
}
Array的简化声明
JSON格式:
var arr={“name”:”tom”,”age”:18,”email”:’tom@itcast.cn’};
Json格式可以当做一个对象。
arr.name、arr.age、arr.email
var arr=[{“name”:”steve”,”age”:18},{“name”:”steve”,”age”:18];//json对象数组。
在Ajax中使用JSON格式传输数据非常方便。
JSON的一些其他写法:
1.
var personalInfo = { "name": "周杰伦", "age": 20, "address": { "city": "beijing", "country": "China"} };
alert(personalInfo.name);
alert(personalInfo.age);
alert(personalInfo.address.city);
alert(personalInfo.address.country);
2.
var students = [{ "id": "1001", "name": "james" }, { "id": "1002", "name": "bob"}];
for (var i = 0; i < students.length; i++) {
alert(students[i].id + "===>" + students[i].name);
}
Array的其他方法:
Array.join(“连接字符串”)//将数组中的元素通过指定的“连接字符串”连接起来,返回一个字符串。
Array.reverse();//将数组中的元素反转。
Array.sort();//排序
练习
====================
1.求一个整数组中的最大值。定义成函数。
2.将一个字符串数组输出为|分割的形式,比如“梅西|卡卡|郑大世”。不要使用JavaScript中的Join函数。arr1.join(“|”)将数组用分隔符连接成一个字符串。//自定义一个myJoin函数。
3. 将一个字符串数组的元素的顺序进行反转。{"3","a","8","haha"} {"haha","8","a","3"}。不要使用JavaScript中的反转函数。提示:第i个和第length-i-1个进行交换。定义成函数。 myreverse数组同样是传递引用,js出错很麻烦。交换两个变量。(测试一下是否会交换)(作业)
===========练习1====================
var num = [1, 2, 344, 5, 6, 7];
var res = GetMax(num);
alert(res);
function GetMax(nums) {
var maxVal = nums[0];
for (var i = 0; i < nums.length; i++) {
if (nums[i] > maxVal) {
maxVal = nums[i];
}
}
return maxVal;
}
=============练习2==================
var strs = ['梅西', '卡卡', '郑大世'];
//var str = strs.join('|');
var str = myJoin('|', strs);
alert(str);
function myJoin(sep, strArray) {
var result = '';
for (var i = 0; i < strArray.length - 1; i++) {
result += strArray[i] + sep;
}
result += strArray[strArray.length - 1];
return result;
}
===========练习3=====================
var strArr = ["3", "a", "8", "haha"];
//strArr.reverse();
myReverse(strArr);
for (var i = 0; i < strArr.length; i++) {
document.write(strArr[i] + '<br/>');
}
function myReverse(strArray) {
for (var i = 0; i < strArray.length / 2; i++) {
var tmp = strArray[i];
strArray[i] = strArray[strArray.length - 1 - i];
strArray[strArray.length - 1 - i] = tmp;
}
}