String :字符串对象的包装类型

  1. var stringObject = new String("wanglehui");

方法总结:

1、返回该对象表示的基本字符串值(也就是返回自身)

valueOf():返回调用对象的原型值

toLocaleString():将数组转换成本地字符串

toString():将调用对象转换成字符串/ 可把一个逻辑值转换成字符串并返回

2、返回字符串长度

stringObject.length():返回字符串长度

3、跟字符有关的方法

charAt():接受一个参数(下标位置),返回该位置的单字符字符串,若没有返回空

stringObject[x]:也可以直接通过下标像取数组值那样取(不过不建议这样做,虽然IE8+、高级浏览器都支持)

charCodeAt():和charAt()类似,只是返回的是字符编码,若越界,返回NaN

4、字符串操作的方法——不改变源字符串

(1)拼接字符串 concat()、“+”

concat:拼接一个或者多个字符串,返回拼接好的新字符串(实践中用的最多的是“+”,效果跟concat一样,而且方便很多)

(2)创建新字符串(返回被操作字符串的子字符串)

正常的语法:

————————————————————————————————————————————

slice(m,n):返回剪切的字符串,从下标m开始,剪切到下标n(包括m不包括n)

substring(m,n):返回剪切的字符串,从下标m开始,剪切到下标n(包括m不包括n)

substr(m,n):从下标m开始剪切n个字符

  1. var str = "wanglehui";
  2.  
  3. var slice = str.slice(2,4); //ng
  4. var substring = str.substring(2,4); //ng
  5. var substr = str.substr(2,4); //ngle

如果只写一个参数:

————————————————————————————————————————————

  1. var str = "wanglehui";
  2.  
  3. var slice0 = str.slice(2); //nglehui
  4. var substring0 = str.substring(2); //nglehui
  5. var substr0 = str.substr(2); //nglehui

解释:三个方法都是从下标m开始,默认截取到字符串结尾。并返回截取的字符串

如果只写一个参数,而且这个参数还是负数:

————————————————————————————————————————————

  1. var str = "wanglehui";
  2.  
  3. var slice2 = str.slice(-2); //ui
  4. var substring2 = str.substring(-2); //wanglehui
  5. var substr2 = str.substr(-2); //ui

解释:slice()、substr()默认是倒着数,也就是 " str.length-2 " 相当于 slice(7)、substr(7)

     substring()会把负数参数转换为0,然后返回整个字符串

如果写两个参数,第一个正数,第二个负数
————————————————————————————————————————————

  1. var str = "wanglehui";
  2.  
  3. var slice3 = str.slice(2,-4); //ngl
  4. var substring3 = str.substring(2,-4); //wa
  5. var substr3 = str.substr(2,-4); //""(空字符串)

解释:slice()仍然是遇见负数倒着数,slice(2,-4) 等于 slice(2,5),截取字符串下标为234的三个字符,如果 “ str.length-4 < 2 ” ,返回空

   substring()也仍然是将负数转化为0,substring(2,-4)  等于 substring(2,0)等于substring(0,2),会默认将较小的数作为开始位置

   substr()会将第二个负数参数转化为0,substr(2,-4) 等于 substr(2,0) ,截取长度为0,也就是返回空字符串

如果两个参数都是负数(建议你就别用这些方法了,这不是作死吗?哈哈....,不过我还是好奇做了下测试)

————————————————————————————————————————————

  1. var str = "wanglehui";
  2.  
  3. var slice4 = str.slice(-2,-4); //""(空字符串) 等于slice(7,5),返回空
  4. var substring4 = str.substring(-2,-4); //""(空字符串) 等于substring(0,0),返回空
  5. var substr4 = str.substr(-2,-4); //""(空字符串) 等于substr(7,0),返回空

解释:具体解释看以下中间小结,符合总结规律

中间小结:

  substring(m,n),遇见负数就转换为0,无论是第几个参数,然后做正常的操作。若 n < m ,会自动将较小的数作为开始位置,简称自动反转

  slice(m,n),遇见负数就倒着数,也无论是第几个参数,也就是 “ str.length -m ”、“ str.length -n ”,但是没有自动反转操作,若 n < m , 返回空

  substr(m,n),遇见负数,分情况而定,第一个参数为负,倒着数定位。第二个参数为负,自动转换为0,也就是截取0个字符,返回空。

5、字符串位置方法

indexOf( str[必填], location[可选] ) : 从下标为location的位置,从前往后搜索字符串“str”,并返回找到时候的下标。找不到返回-1

lastIndexOf( str[必填], location[可选] ) :从下标为location的位置,从后往前搜索字符串“ str ”,并返回找到的下标。找不到返回-1

6、删除字符串边缘的空格

trim():创建一个字符串副本,并删除前置和后缀的空格,然后返回处理后的字符串

trimLeft(): 创建一个字符串副本,并删除字符串前置空格,然后返回处理后的字符串

trimRight():创建一个字符串副本,并删除字符串后缀的空格,然后返回处理后的字符串

7、字符串的模式匹配方法

match(): 对比正则的exec(),两者返回数组一样,但使用方式正好相反(有关“捕获组”具体详见《JavaScript高级升序设计》P-106)

  match():在字符串上调用这个方法,接受参数类型(正则表达式/RegExp对象),返回包含第一个匹配信息的数组,若无返回null

  exec():在RegExp上调用这个方法,接收参数(字符串),返回包含第一个匹配信息的数组,若无,返回null

search(): 与match接受参数相同,调用方式相同。不同的是search()始终从开头开始查找,找到返回下标,找不到返回-1

replace():替换子字符串的方法,接受两个参数,第一个参数(RegExp对象/字符串),第二个参数(字符串/函数)

  1. /*
  2. * match 当前匹配项
  3. * position 当前匹配项的下标位置
  4. * originalText 原始文本
  5. * 返回替换后的字符串副本,不改变原始值
  6. * */
  7. var test = originalText.replace( regExp, function( match, position, originalText ){
  8. // code
  9. });

split():基于指定分隔符将字符串分割成多个子字符串,并将结果放在一个数组中。分隔符可以是字符串,也可以是RegExp对象,第二个参数可以设定返回数组的大小,以确保返回的数组不会超过既定大小。

  1. var str = "wanglehui|daifen|daye|daniang";
  2.  
  3. var arr0 = str.split("|"); //["wanglehui", "daifen", "daye", "daniang"]
  4. var arr1 = str.split("|",2); //["wanglehui", "daifen"]
  5. var arr2 = str.split(/[^/|]+/); //["", "|", "|", "|", ""]

解释:arr2是以不是“|”的标识符为分隔符,所以开头和结尾都符合要求,也就是空了

8、字符串比较

localeCompare():比较两个字符串,返回下列值中的一个

  如果该字符串在字母表中应该在字符串参数的前面,则返回一个负数(大多是-1,具体不定)

  如果字符串等于字符串参数,返回0
  如果该字符串在字母表中应该在字符串参数的后面,则返回一个正数(大多是1,具体不定)

  1. var str = "w";
  2.  
  3. var arr0 = str.localeCompare("z"); //-1
  4. var arr1 = str.localeCompare("d"); //
  5. var arr2 = str.localeCompare("w"); //

9、字符串字符编码操作

charCodeAt(n):返回字符串中下标为n的字符的字符编码

fromCharCode():静态方法,将接受的一个或者多个字符编码转换成字符串

  1. var str = "hello";
  2. var str1 = str.charCodeAt(0); //
  3.  
  4. var str2 = String.fromCharCode(104, 101, 108, 108, 111); //hello

10、HTML方法

  早期JavaScript动态格式化HTML的方法,只做了解,不建议使用,因为语义不明!

anchor(name): 输出结果  <a name = "name" >string</a>

big(): 输出结果  <big>string</big>

bold(): 输出结果  <b>string</b>

fixed() :输出结果  <tt>string</tt>

fontcolor(): 输出结果  <font color = “color” >string </font>

fontsize(): 输出结果  <font size= “size” >string </font>

italics(): 输出结果  <i>string</i>

link(url): 输出结果  <a herf = "url">string</a>

small(): 输出结果  <small>string</small>

strike(): 输出结果  <strike>string</strike>

sub(): 输出结果  <sub>string</sub>

sup(): 输出结果  <sup>string</sup>

参考书籍:《JavaScript高级程序设计》5.6.3String类型

String类型的方法总结的更多相关文章

  1. String类型作为方法的形参

    代码: public class TestString { String str = new String("good"); char [] ch = {'a','b','c'}; ...

  2. 手写面试编程题- 数组去重 深拷贝 获取文本节点 设置奇数偶数背景色 JS中检测变量为string类型的方法 第6题闭包 将两个数组合并为一个数组 怎样添加、移除、移动、复制、创建和查找节点? 继承 对一个数组实现随机排序 让元素水平 垂直居中的三种方式 通过jQuery的extend方法实现深拷贝

    第1题==>实现数组去重 通过 new Set(数组名) // var arr = [12, 12, 3, 4, 5, 4, 5, 6, 6]; // var newarr1 = new Set ...

  3. JAVA中int转String类型有三种方法

    String.valueOf(i) Integer.toString(i) i+"" i+""也就是一个int型的常量.+上个空的字符串,这里牵涉到了strin ...

  4. go中基本数据类型转换为string类型的方法

    代码 // 基本数据类型转换为string类型 package main import ( "fmt" "strconv" ) func main() { // ...

  5. Python学习笔记:String类型所有方法汇总

    # 按字母表熟悉下string中的方法# A B C D E F G H I J K L M N O P Q R S T U V W X Y Z# 标红的为常用重点的方法!! str = " ...

  6. string类型的方法

    var str1 = ' this is string1 '; var str2 = 'this is string2'; str1.indexOf('s'); //args:string retur ...

  7. String类型的方法使用

    String.equals()方法源代码: public boolean equals(Object anObject) { if (this == anObject) { return true; ...

  8. 解决前端浏览器传JSON对像到服务端后全部变成string类型的方法

    这几天公司用nodejs+mongodb来做些东西,UI用的是kendo UI 碰到一个问题: 举个例子var a={"name":"张三","age ...

  9. C++中将string类型转换为int, float, double类型 主要通过以下几种方式:

      C++中将string类型转换为int, float, double类型 主要通过以下几种方式: # 方法一: 使用stringstream stringstream在int或float类型转换为 ...

随机推荐

  1. Angular 简单的Post

    <!DOCTYPE html><html ng-app="myApp"><head lang="en"> <meta ...

  2. Metaspace 之一:Metaspace整体介绍(永久代被替换原因、元空间特点、元空间内存查看分析方法)

    回顾 根据JVM内存区域的划分,简单的画了下方的这个示意图.区域主要分为两大块,一块是堆区(Heap),我们所New出的对象都会在堆区进行分配,在C语言中的malloc所分配的方法就是从Heap区获取 ...

  3. free命令详解

    free的命令详解   free命令可以显示当前系统未使用的和已使用的内存数目,还可以显示被内核使用的内存缓冲区. 语法 free [选项] 选项 -b 以Byte为单位显示内存的使用情况 -k 以K ...

  4. ultraEdit MAC 破解方法

    安装了个UltraEdit 但是需要验证码,太麻烦了,破解方法: 拷贝附件(command +c )然后在MAC的底下点击访达==>应用程序==>UltraEdit==>右击 显示包 ...

  5. 【Linux】工作管理

    在进行工作管理的行为中,其实每个工作都是目前bash的子进程,即彼此间是有相关性的.我们无法以job control的方式由tty1的环境去管理tty2的bash 当只有一个终端时,可以出现提示符让你 ...

  6. 学习笔记特别篇之orm的跨表

    models.Love.objects.filter(b__name="t1",g__nams="a1") 表示先inner join b on xx 再 in ...

  7. poj3320(尺取法)

    题目大意:给你一串数字,找出最小的能够覆盖所有出现过的数字的区间长度: 解题思路:依旧是尺取法,但要用map标记下出现过的书: 代码:别用cin输入: #include<iostream> ...

  8. BZOJ4538 HNOI2016网络(树链剖分+线段树+堆/整体二分+树上差分)

    某两个点间的请求只对不在这条路径上的询问有影响.那么容易想到每次修改除该路径上的所有点的答案.对每个点建个两个堆,其中一个用来删除,线段树维护即可.由于一条路径在树剖后的dfs序中是log个区间,所以 ...

  9. mysql case when 判断null

    select  name,case WHEN m.NAME is null THEN '' else m.NAME end NAME1 from  sys_users

  10. P1306 斐波那契公约数

    题目描述 对于Fibonacci数列:1,1,2,3,5,8,13......大家应该很熟悉吧~~~但是现在有一个很“简单”问题:第n项和第m项的最大公约数是多少? 输入输出格式 输入格式: 两个正整 ...