String类型有几种操作字符串的方法

concat()方法拼接任意多个字符串,不修改原字符串

var stringValue=“hello ”;

var result=stringValue.concat("world");

alert(result);  //"hello world"

alert(stringValue);  //"hello"

在实际的操作中更多的使用(+)操作符

ECMAScript还提供了三个基于子字符串创建新字符串的方法:slice()、substr()和substring(),它们都接收一或两个参数,第一个参数指定子字符串的开始位置,第二个参数如不指定则直至字符串结束。

slice()和substring()第二个参数指定子字符串最后一个字符后面的位置,而substr()的第二个参数指定的是返回字符个数

var str=“hello world”;

alert(str.slice(3));  //"lo world"

alert(str.substring(3));  //"lo world"

alert(str.substr(3));  //"lo world"

alert(str.slice(3,7));  //"lo w"

alert(str.substring(3,7));  //"lo w"

alert(str.substr(3,7));  //"lo worl"

如果传入的参数是负数,三个方法的行为各不相同

var str=“hello world”;

alert(str.slice(-3));  //"rld" 将负的参数都与字符串的长度相加

alert(str.substring(-3));  //"hello world" 将负的参数都转换为0

alert(str.substr(-3));  //"rld" 将第一个负的参数与字符串的长度相加,将第二个负的参数转换为0

alert(str.slice(3,-4));  //"lo w"

alert(str.substring(3,-4));  //"hel"

alert(str.substr(3,-4));  //“”(空字符串)

字符串的位置方法

indexOf()和lastIndexOf(),前者从前往后搜索,后者往前搜索,它们都接收一个或两个参数,第一个为要搜索的字符,第二个(可选)为搜索的位置,如没有找到则返回-1

var str=“hello world”;

alert(str.indexOf("o",6));  //7

alert(str.lastIndexOf("o",6));  //4

检测它的返回值是否大于-1来判断是否存在

trim()方法会创建字符串的一个副本,删除前置以及后缀的所有空格

var str=“     hello world     ”;

var tri=str.trim();

alert(str);  //"     hello world     "

alert(tri);  //"hello world"

字符串大小写转换

var str=“hello world”;

str.toLowerCase()   str.toUpperCase()

str.toLocaleLowerCase() str.toLocaleUpperCase()  //针对少数语言(如土耳其语)Unicode大小写转换应用特殊规则

字符串的模式匹配方法

match()接收一个参数,要么是一个正则表达式要么是一个RegExp对象,match()方法返回的是一个数组

var text="cat,bat,sat,fat";

var pattern=/.at/;

//与pattern.exec(text)相同

var matches=text.match(pattern);

alert(matches.index);  //0

alert(matches[0]);  //"cat"

alert(pattern.lastIndex);  //0 语法RegExpObject.lastIndex,储存着上一次匹配文本之后第一个字符的位置

search()接收的唯一参数与match()相同,返回的是字符串中第一个匹配项的索引,如果没有找到匹配项,则返回-1,search()方法始终是从字符串开头向后查找模式

var text="cat,bat,sat,fat";

var pos=text.search(/at/);

alert(pos);  //1

replace()方法替换子字符串,接收两个参数,第一个参数可以是一个RegExp对象或者一个字符串(这个字符串不会被转换成正则表达式),第二个参数是一个字符串或者一个函数

如果第一个参数是字符串,那么会替换第一个子字符串,想要替换所有子字符串唯一办法就是提供一个正则表达式,而且要指定全局(g)标志

var text="cat,bat,sat,fat";

var result=text.replace("at","ong");

alert(result);  //"cong,bat,sat,fat"

var result=text.replace(/at/g,"ong");

alert(result);  //"cong,bong,song,fong"

另外,如果第二个参数是字符串,还可以使用一些特殊的字符序列,将正则表达式操作得到的值插入到结果字符串中

$&  匹配整个模式的子字符串

$'  匹配的子字符串之前的子字符串

$`  匹配的子字符串之后的子字符串

$n  匹配第n(0~9)个捕获组的子字符串,正则表达式里如果没有定义捕获组,则使用空字符串

$nn  匹配第nn(01~99)个捕获组的子字符串,正则表达式里如果没有定义捕获组,则使用空字符串

var text="cat,bat,sat,fat";

var result=text.replace(/(.at)/g,"word($1)");

alert(result);  //word(cat),word(bat),word(sat),word(fat)

replace()方法的第二个参数也可以是一个函数,实现更精细的替换操作

在只有一个匹配项(即与模式匹配的字符串)的情况下,会向整个函数传递3个参数:模式的匹配项、模式匹配项在字符串中的位置和原始字符串

在正则表达式中定义了多个捕获组的情况下,参数依次是模式的匹配项、第一个捕获组的匹配项、第二个捕获组的匹配项……最后两个参数仍然是模式匹配项在字符串中的位置和原始字符串

function htmlEscape(){

  return text.replace(/[<>"&]/g,function(match,pos,originalText){

    switch(match){

      case"<":

        return "&lt;";

      case">":

        return"&gt;";

      case"&":

        return"&amp;";

      case"\"":

        return"&quot;";

    }

  });

}

以上函数能够转义大于号、小于号、和号以及双引号

最后一个与模式匹配有关的方法是split(),可以基于指定的分隔符将字符串分割成多个子字符串,并将结果放在一个数组中,可选的第二个参数用于指定数组的大小,确保返回的数组不超过既定长度

var colorText="red。blue。green。yellow";

var colors1=colorText.split("。");  //["red","blue","green","yellow"]

var colors2=colorText.split("。",2);  //["red","blue"]

var colors3=colorText.split(/[^\。]+/);  //["","。","。","。",""]

----------------------------------------------------------------------------------------------告一段落------------------------------------------------------------------------------------------------------------------

JavaScript高级程序设计10.pdf的更多相关文章

  1. JavaScript高级程序设计61.pdf

    JSON对象 早期的JSON解析器就是使用JavaScript的eval()函数,ECMAScript5对解析JSON的行为做出了规定,定义了全局对象JSON. JSON对象有2个方法:stringi ...

  2. JavaScript高级程序设计54.pdf

    过滤输入 对于一些浏览器,可以使用正则表达式里的text()测试用户按下的按键,Firefox和safari(3.1版本之前)会对向上向下.退格键和删除键触发keypress事件,在Firefox中, ...

  3. JavaScript高级程序设计21.pdf

    第10章 DOM DOM(文档对象模型)是针对HTML和XML文档的一个API(应用程序编程接口) IE中所有DOM对象都是以COM对象的形式实现的,这意味着IE中的对象与原生JavaScript对象 ...

  4. JavaScript高级程序设计17.pdf

    导航和打开窗口 使用window.open()方法可以导航到一个特定的URL也可以打开一个新的浏览器窗口,接收4个参数:要加载的URL.窗口目标.特性字符串和一个表示新页面是否取代浏览器历史记录中当前 ...

  5. JavaScript高级程序设计6.pdf

    ECMAScript通过RegExp类型来支持正则表达式 var expression=/pattern/flags;其中模式(pattern)部分是正则表达式,可以包含字符类.限定符.分组.向前查找 ...

  6. JavaScript高级程序设计2.pdf

    第三章 基本概念 区分大小写 ECMAScript中的一切(变量.函数名和操作符)都区分大小写 标识符 指变量.函数.属性的名字或者函数的参数 第一个字符必须是一个字母.下划线或美元符号,其它字符可以 ...

  7. JavaScript高级程序设计60.pdf

    错误处理 try-catch语句 try{ //可能会导致错误的代码 }catch(error){ //在错误发生时如何处理 } error是一个包含着错误信息的对象,它有一个message属性,保存 ...

  8. JavaScript高级程序设计58.pdf

    15章 使用Canvas绘图 略 16章 HTML5脚本编程 HTML5规范了新的HTML标记和JavaScript API,以便简化创建动态Web界面的工作 跨文档消息传递 简称XDM,指来自不同域 ...

  9. JavaScript高级程序设计57.pdf

    表单序列化 首先了解一下浏览器如何将数据发送给服务器 对表单字段的名称和值进行URL编码,使用和号(&)分隔 不发送禁用的表单字段 只发送勾选的复选框和单选按钮 不发送type为“reset” ...

随机推荐

  1. 【AngularJS】——0.分析

    [引导分析]1.什么是AngularJS? 2.为什么要使用它? 3.应用场合? 4.基本思想? 5.四大核心特征? 6.优缺点是什么? 1.定义:AngularJS是一个用于设计动态web应用的前端 ...

  2. Java学习----接口

    1. interface关键字 2. 接口中的方法全部是抽象方法,不能被实例 3. 接口中的成员变量: public static final 4. 当子类实现接口的时候,必须覆盖接口中所有的方法 / ...

  3. JqGrid实现自定义查询

    $("#jqGridId").setGridParam({url:"数据查询地址"}).trigger("reloadGrid");

  4. .net 对配置文件内容的操作

    配置文件分为两种 :一种是winform应用程序的配置文件, 一种是web的配置文件. 两种配置文件最大的区别是web的配置文件更新之后会时时更新, 应用程序的配置文件不会实时更新. 更新应用程序的配 ...

  5. RecordSet .CacheSize, Properties,CurserType,PageSize

    使用 CacheSize 属性可以控制一次要从提供者那里将多少个记录检索到本地内存中.例如,如果 CacheSize 为 10,首次打开 Recordset 对象后,提供者将把前 10 个记录检索到本 ...

  6. 从文章"避免复制与粘贴"到文章"Extract Method"的反思(3)

    在牛人的博客中提到了..如果你的代码可以copy-past的时候,那么久证明你的代码出现了重复.而这种重复仅仅是虚假的代码行的增加而不是像其他的代码复用那样降级成本. copy-pase代码意味着你违 ...

  7. 【C语言】测试系统各数据类型大小代码

    测试各系统不同数据类型大小代码 一.相关基础知识 不同环境下各数据类型大小可能不相等,(某些环境下,类型带下可以选择)故测了就知道! 二.具体内容 三.分析总结 四.实例测试 #include< ...

  8. 字符串copy

    #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> #include<string. ...

  9. eclipse + maven + jboss 遇到ClassNotFoundException

    在使用eclipse + maven + jboss开发过程中,碰到ClassNotFoundException, 原因应该是deployed包中未包含maven的依赖jar. 可以通过如下方法把依赖 ...

  10. iOS:处理XML文件

    NSXMLParser是标准库类 Book.xml <?xml version="1.0" encoding="UTF-8"?> <!--Do ...