Javascript--String类型

来源:互联网 发布:程序流程图软件 编辑:程序博客网 时间:2024/06/11 13:49

1 说明

Javascript中用Strng类型来表示所有的字符类型的数据,在Javascript中没有Char和String的区别,这一点和其他的编程语言有区别.

2 如何表示字符

在Javascript中创建一个String数据,直接用引号将要表示的字符包含其中即可
var str = "这是测试字符啦!";
注意在Javascript,用来包含字符串的引号可以是单引号,也可以是双引号,例如上面的例子也可以写成:
var str = '这是测试字符啦!';

2.1 如何表示特殊字符

有些时候我们需要表示带空行或者带Tab的字符串,这时候我们应该怎么去实现呢? 我们脑海里面可能想到的表示方式可能有如下这种方式的:

var str = "这是第一行这是第二行这是第三行";

有这样的想法很正常,让我们看看上面这种方式在浏览器执行的结果吧:
这里写图片描述
大家可能会想,为什么会出错,其实这个道理也不是很难,大家知道在Javascirpt中程序的语句的分割方式有两种,一个是使用分号(;)来分割代码,另外一种方式就是使用换行来实现代码的分割。
 对于前者大家应该知道,在每个Javascirpt语句写完了过后,在语句末尾一般会加上分号,第二种方式,是不怎么受推荐的方式的,直接使用换行来判断,例如下面这几段代码是有效的

 var text1 = "第一行" var text2 = "第二行" alert(text1) alert(text2)

现在回归到我们的例子:

var str = "这是第一行这是第二行这是第三行";

浏览器在执行时候会将上面的第一行

var str = "这是第一行

作为一个独立完整的语句来进行解析,根据Javascript语法要求,上面这一句在格式上面不符合标准,所以会出现上图表示的错误信息.

 因此,为了表示这类特殊的字符,Javascript使用类似与其他语言的转义方式来表示换行,Tab和其他特殊字符。
 具体的方式是使用: 反斜杠(\) + 字符 这种结构来表示,例如,要表示换行,则是\n.其他的特殊字符的表示方式如下表:

字符 含义 \n 换行 \b 退格符 \r 回车符 \t 制表符 \f 换页符 \\ \ \' 单引号 \" 双引号

更多其他的特殊字符,请读者在搜索工具中查阅。

使用上面的特殊字符来表示特殊字符的数量还是有限的,所以应该提供一种更加统一的方式来表示字符,在Javascript使用\uNNNN来表示Unicode,其中N表示是的十六进制数.
因此,可以用\u1234来表示ሴ

2.2 如何使用转义 

 在Javascript表示字符的时候有些时候需要进行转义,例如:
  我们想要表示: I'am a student 字符.
  如果使用如下的语句:

   var str = 'I'am a student';

则Javascript执行引擎在分析代码的时候,会将引号进行匹配,就不能有效的区分, 也就是将'I' 看做是一个字符串表达,结果会是I字符, 但是,这并不是我们想要的结果,所以需要显示的告诉Javascript第二个'应该解释为字符,而不是用来作为包含字符内容的,如何告诉Javascript执行引擎呢?
  这就时候转义的用处来,转义,顾名思义,转变原有的意思,转义的方式是在要表示的内容前面加上\, 所以,上面的字符可以表示为

var str = 'I\'m a student';

  所以,我们可以发现,在表达某些字符可能出现二义性的时候,我们需要显示的告诉Javascript选用那种方式。
  现在,让大家看一下,如果上面的字符串通过下面的表达方式,是否需要进行转义

var str = "I'm a student";

 如果你的回答是不需要转义,恭喜你,答对了!
 这种情况下,我们的Javascript执行引擎可以区分出双引号里面包含有一个单引号,而且此时,单引号应该解释为单引号,而不是用来包含字符的.

因此我们可以总结什么情况下,需要对双引号或单引号进行转义.

1 如果用单引号包含一个双引号字符,则双引号则不需要进行转义的;双引号同理,例如:

var str1 = "I'm a student";var str2 = 'show " in content ';

2 如果单引号包含的字符串里面需要表示单引号,则字符串里面的单引号需要进行转义,双引号同理,例如:

var str1 = 'I\'m a student';var str2 = "show \" in content";

3 属性

String类型定义length属性,这个属性用来表示字符串的长度,例如:

console.log("1234".length));

输出的结果应该是:
4
Javascript当中的String 对象有一个特性,就是一旦创建后,就不能进行修改,所以,一个String类型的对象它的长度是固定的。

4 方法

4.1 charAt

该方法用来访问字符串中特定位置的字符,该方法接受一个参数,该参数用来说明获取字符串中第几个字符,字符串中字符的索引是从0开始的.

  var str = "12345";  console.log(str.charAt(3));

输出的结果是: 4

4.2 toLowerCase/toUpperCase

  该方法获取字符串的大写或小写的形式. 例如:

console.log('shanghai'.toUpperCase());

结果是: SHANGHAI

4.3 子串

这部分涉及到String对象的三个方法(substring, substr和slice),
下面以字符串内容为”this is a demo”为例进行说明:

1 substring(startPosition, endPosition): 该方法的字符串不包含endPosition位置的字符.

"this is a demo".substring(0, 3);

输出的结果是:
thi

2 slice(startPosition, endPosition): 该方法的字符串不包含endPosition位置的字符.

"this is a demo".slice(0, 3);

输出的结果是:
thi

3 substr(startPosition, length): 该方法的获得的子字符串从startPosition位置开始,长度为length.

"this is a demo".substr(0, 3);

输出的结果是:
thi

从上面我么可以看出substring和slice方法的功能类似,其实它们之间还是存在一定的差别的,主要差别是体现在它们对待负数和溢出数值的方式

负数(negative):
strstring将负数看做0,所以

console.log("demo".strstring(-1));

结果是:demo

slice将负数看做是从字符串的右侧开始定位,-1表示从右边起第一个字符.

console.log("demo".slice(-1));

结果是: o

5 字符串的比较

比较算法
1. 计算第一个字符: a = s1.charAt(0) b = s2.charAt(0),如果它们相等则继续,否则返回> 或者< 的结果;
2. 比较第二个字符,以此类推;

var str1 = "abc";var str2 = "abd";console.log(str1 > str2);

结果是: false;

6 字符和数字

  我们经常会看到类似于15 > "4"的算式,对于这类算式,如何去判断的它的结果,Javascript的执行策略是:如果比较操作符的操作数有一个是数字,则其他的都将会转化为数字类型。
  所以,下面例子:

console.log(11 > "2");

结果是: true

本文参考: http://javascript.info/tutorial/string

0 0
原创粉丝点击