前端(JavaScript)------字符串

简介: 字符串就是用单引号或者双引号包裹起来的,零个或多个排列在一起的字符

一、字符串

1.字符串概述

 定义:字符串就是用单引号或者双引号包裹起来的,零个或多个排列在一起的字符

  ’javascript ‘,  “” , “345” , ’ 9-11a$ ‘, “ xiao_yuanLian ”

  嵌套: 字符串可以嵌套

单引号包裹的字符串内部,应该使用双引号进行嵌套

 在双引号包裹的字符串内部,应该使用单引号进行嵌套

 “I am ‘coolMan’ ”, ’are u “kidding” me’

 ps:总之字符串嵌套不能够出现容易引起混淆的使用方式。

 pss:在json解析的时候字符串需要单引号,因此推荐在各种情况都使用单引号的方式来声明。

转义字符:用特殊的符号来替代在字符串当中,容易引起歧义的内容。

 \’ 单引号

 \” 双引号

 在嵌套时提到,字符串的嵌套不能够写引起混淆的方式。如果非要在字符串中使用相同的标识,就需要使用转义字符。

 ' Did she say \’Hello\'? '  

 " Did she say \"Hello\"? “

 “ Can U tell me your YinHangKa password?\nGun du zhi!! "

强调1:字符串需要在一行内定义,分成多行会报错。但是如果必须分成多行,则在每一行的末尾使用反斜杠 \ 作为连接符。

例如:

    “you \

                 are \

                  so \

                cute!”

强调2:也可以使用(+)连接运算符连接多个字符串,模拟多行字符串。

   ‘you‘

 +’are‘

 +‘so’

 +’cute!‘//正确的写法

2.字符串长度

javascript字符串中提供了一系列的方法,来帮助我们更好的使用字符串。

 a.测量字符串长度:length属性

b.字符索引:[ ] 方法

 c.获取指定位置字符:charAt()方法charCodeAt()方法

 d.字符串连接:concat()方法

a.测量字符串长度:length属性
<script>
  var txt1 = "Hello World!";
  document.write("<p>" + txt1.length + "</p>");//12
  var txt2 = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
  document.write("<p>" + txt2.length + "</p>");//26
</script>
ps:   document.write()的作用是:能够在页面当中通过脚本的方式编写html样式的代码。
pss:  这只是一种写法,在现在阶段和console.log效果没差别。
psss: length属性是字符串经常会用到的,必须掌握!
b.字符索引:[ ]方法
  [ ]方法:在字符串后面接中括号,中括号中写数字。能够访问到字符串中的每个字符。
  var name = "Frankenstein";  
  var firstCharacter = name[0]; 
  document.write("<p>"+firstCharacter +"</p>");
ps:  索引一次只能索引一个字符,如果需要多个则需要用+连接符。
pss: 索引从0开始,0表示第一个字符。
c.获取指定位置字符:charAt()方法和charCodeAt()方法
  charAt()和charCodeAt()方法均表示获取指定位置的字符。不同的是:
    charAt返回的是具体的字符
    charCodeAt返回的是字符对应的Unicode编码
  var name = “Frankenstein”;
  var at = name.charAt(0);
  var codeAt = name.charCodeAt(0);
  结果显而易见:
  F
  70
ps: 字符编码需要记得的两个。A—65,a—97。其他符号累加即可。
pss:如果 index 是负数,或大于等于字符串的长度,则 charCodeAt() 返回 NaN。 
d.字符串连接:concat()方法
  concat()方法能够将两个字符串拼接起来,合成一个新的字符串。
<script>
  var speakWord1 = "come on!Please!";
  var speakWord2 = “cute girl!";
  var finalWord = speakWord1.concat(speakWord2);
  console.log(finalWord);
</script>
可以认为concat和+作用相同。至少在现阶段我们可以认为他们是没有区别的。

3.转义字符

JavaScript 中,字符串写在单引号或双引号中。正因为这样,以下字符串无法解析:

"We are the so-called "Vikings" from the north."

 原因:字符串 "We are the so-called " 被截断。

如何解决以上的问题呢?可以使用反斜杠 (\) 来转义 "Vikings" 字符串中的双引号,如下:

"We are the so-called \"Vikings\" from the north."

定义:反斜杠被叫做转义字符。

作用:转义字符能够将特殊字符转换为字符串字符转义字符 (\) 可以用于转义撇号,换行,引号,等其他特殊字符

\n  \r  <br />区别

 \n是换行,英文是New line,表示使光标下移一格
 
\r是回车,英文是Carriage return,表示使光标到行首

 <br />是浏览器换行

 我们在平时使用电脑时,已经习惯了回车和换行一次搞定,敲一个回车键,即是回车,又是换行。它是输出的HTML代码换行,客户看到的效果没有换行。

 好比你在Webstorm里做一个网页,输入\r\n后,查看html源代码,就看会到有换行,而HTML解释器(浏览器)认为它是没用的东西,用不用都一样显示。

总结:\r \n 表示源代码换行<br/> 表示浏览器文字换行

4.字符串对象

       JavaScript中有字符串类型String类型,我们也知道这种基本类型的变量的创建方式。

 但JavaScript中还提供了另外一种字符串的声明方式,这种方式叫字符串对象

  使用 new 关键字将字符串定义为一个对象

  语法:var newString = new String(‘Frankenstein’);
            var string1 = “frank";  //typeof返回 String
            var string2 = new String(“frank");   //typeof返回 Object

ps:    不要创建 String 对象。它会拖慢执行速度,并可能产生其他副作用:

pss:  字符串字符串对象是两个完全不同类型的数据,虽然效果相似,但是不能混为一谈!

  var x = "John";              
  var y = new String("John");
  (x === y)  // 结果为 false,因为是字符串,y 是对象        

5.字符串属性及方法

字符串中提供了一系列的方法帮助我们更好的使用字符串。  

 (1).length:返回字符串长度             (2).charAtnumber):返回当前指定位置的字符

 (3).charCodeAt:                          (4).concat:连接字符串

 (5).substring:截取字符串               (6).substr:截取字符串(长度)

 (7).slice:截取字符串。                   (8).indexOf:返回当前查找字符串的位置,如果没有返回-1

 (9).lastIndexOf:倒过来查找            (10).trim:去掉字符串两端的空格

 (11).toUpperCasetoLowerCase:大小写转换      (12).localeCompare:比较两个字符串大小

 (13).match:返回一个指定字符串的数组                 (14).search:返回位置

 (15).replace:替换字符串                 (16).split:字符串切割,返回数组

5).substring:截取字符串
  作用是从num1位置开始截取,截止到num2位置结束之间的字符串。
  语法:str.substring(num1,num2);
  var string = 'The Three FireGuners';
  string.substring(4, 9) // 'Three'
  string.substring(9, 4) // 'Three'
  第一个参数表示子字符串的开始位置,第二个参数表示结束位置。
  ps:结束位置理论上应该大于开始位置。
  pss:如果出现第一个参数大于第二个参数的情况,substring方法会自动更换两个参数的位置。
(6).substr:截取字符串
  作用是从num1位置开始截取,num2表示要截取的字符串长度。
  语法:str.substr(num1,num2);
  var string = 'The Three fireGuners';
  string.substr(4, 9) // 'Three fir'
  string.substr(9, 4) // ' fir'
  ps:subStr方法虽然写法和subString很相似,但是表达的涵义以及用法却并不一样。substr方法两个参 
        数不能够互换。
(7).slice:截取字符串
  作用是从num1位置开始截取,num2表示截取结束的位置。
  语法:str.slice(num1,num2);
  var string = 'The Three fireGuners';
  string.slice(4, 9) // 'Three'
  string.slice(9, 4) // ''
  ps:slice作用也是截取字符串,但是slice的两个参数不能互换。
  pss:如果开始位置大于结束位置,那么返回结果就是一个空字符串。
  思考,如果开始位置是一个负数会发生什么?

注意:

 substringsubstrslice三个方法第一个参数都表示字符串截取的开始位置

如果省略第二个参数,那么这三个方法都表示获取字符串本身一直到结束

  var string = 'The Three fireGuners';
  string.substring(0);
  string.substr(0) ;
  string.slice(0);

显然,三个语句的结果都是The Three fireGuners

(8).indexOf:查找一个字符串在另一个字符串的位置
  语法:str.indexOf(‘subStr’);
  var string = 'xiaoMingTongXue';
  string.indexOf('i') ;//1
  字符串的查找是从原字符串的开始处进行查找。如果查找失败则返回-1.
(9).lastIndexOf:查找一个字符串在另一个字符串的位置
  语法:str.lastIndexOf(‘subStr’);
        var string = 'xiaoMingTongXue';
        string.lastIndexOf('i') ;//5
  字符串的查找是从原字符串末尾处向前进行查找。如果查找失败则返回-1.
  ps:只是查找顺序从末尾向前,并不是把字符串也反过来查找!!
    var string = 'xiaoMingTongXue';
    string.lastIndexOf('eu') ;//-1

注意:

 indexOflastIndexOf还能接受第二个参数。

 对于indexOf而言,表示从这个位置开始向后匹配。

 而对于lastIndexOf而言,则表示从这个位置开始向前匹配

 str.indexOf(‘subStr’,num);
  str.lastIndexOf(‘subStr’,num);
  var string = 'xiaoMingTongXue';
  string.indexOf('i',3); //5
  string.lastIndexOf('i',3) ;//1 
(10).trim方法
  trim()方法的作用是能够去掉字符串两端多余的空格。
  语法:str.trim();
  var string = '  China WanSui!  ';
  string.trim() ;//China WanSui!
ps:需要强调的是trim方法并不会对原本字符串产生任何影响,而是会生成一个新的字符串。
(11).toUpperCase方法
  toUpperCase方法能够把字符串中的英文字母全都转换成大写字母。
  语法:str.toUpperCase();
  var string = 'i am grute!';
  string.toUpperCase() ;//I AM GRUTE!
ps:方法调用后面的()不能省略,这表示调用了一个方法!
(11).toLowerCase方法
  toLowerCase方法能够把字符串中的英文字母全都转换成小写字母。
  语法:str.toLowerCase();
  var string = 'I AM Grute!';
  string.toLowerCase() ;//i am grute!
(12).localeCompare方法
  localeCompare方法的作用是根据本地的排序规则来进行比较。
  如果计算结果大于0则表示str1大于str2。
  如果计算结果等于0则表示str1等于str2。 如果计算结果小于0则表示str1小于str2。 
  语法:str1.localeCompare(str2);
  var str1 = 'f';  
    var str2 = 'D';
  str1.localeCompare(str2) ;//1
(13).match方法
  match方法的作用是查找原字符串是否匹配某个子字符串,返回结果是匹配的子字符串数组
    如果没有找到 则返回null。返回的数组内容为:寻找的子字符串,子字符串位置和原字符串。
  语法:str.match(substr);
  var string = 'hello world hello!';
  string.match('hello') ;//['hello', index: 0, input: 'hello world hello!']
     ps:需要注意的是match方法只能匹配到寻找到的第一个字符串。
(14).search方法
  search方法和match相似,都是查找子字符串在指定字符串中的位置。不同的的返回结果为下标。如果没有找到匹配字串,则返回-1。
  语法:str.search('subStr');
  var string = 'hello world hello!';
  string.search('hello') ;//0
(15).replace方法
  replace方法能够将【查找到的第一个指定字符串】替换成【目标字符串】。如果查找失败则不发生替换,而是将原字符串复制一份拷贝。
  语法:str.replace(oldString,newString);
  var string = 'hello world!';
  var newString = string.replace('world','frank') ;//hello frank!
  var stringCopy = string.replace('worlk','frank');//hello world!
ps:需要强调的是replace方法并不会对原本字符串产生任何影响,而是会生成一个新的字符串。
pss:replace只能改变第一个查找到的子字符串,如果想要改变多个,仍然需要依赖于正则表达式。
(16).split方法
  split方法能够根据指定的符号将字符串进行分割,分割后的每一个子元素整合成一个数组返回。
    如果无法分割,那么返回的数组只有一个元素,这个元素就是字符串本身。
  语法:str.split(symbol);
  var string = 'good bye everyone.';
  string.split(' ') ;//["good", "bye", "everyone"]
ps:split方法最后会返回一个数组。
pss:分割的符号不同,得到的结果也不同。

**字符串Base64编码

Base64本身是一种加密方式,可以将任意字符转成可打印字符。而我们使用这种编码方法,主要不是为了加密,而是为了不出现特殊字符,简化程序的处理。

 javascript中字符串提供了两个有关Base64编码的方法:

 btoa():字符串或二进制值转为Base64编码

 atob()Base64编码转为原来的编码

  var string = 'frank';
  console.log(btoa(string));//ZnJhbms=
  var string = 'ZnJhbms=';
  console.log(atob(string));//frank

ps:这两个方法不适合非ASCII码的字符,会报错。如果要把非ASCII码字符转为Base64编码,必须中间插入一个转码环节,再使用这两个方法。

目录
相关文章
|
10月前
|
JSON 自然语言处理 前端开发
【01】对APP进行语言包功能开发-APP自动识别地区ip后分配对应的语言功能复杂吗?-成熟app项目语言包功能定制开发-前端以uniapp-基于vue.js后端以laravel基于php为例项目实战-优雅草卓伊凡
【01】对APP进行语言包功能开发-APP自动识别地区ip后分配对应的语言功能复杂吗?-成熟app项目语言包功能定制开发-前端以uniapp-基于vue.js后端以laravel基于php为例项目实战-优雅草卓伊凡
559 72
【01】对APP进行语言包功能开发-APP自动识别地区ip后分配对应的语言功能复杂吗?-成熟app项目语言包功能定制开发-前端以uniapp-基于vue.js后端以laravel基于php为例项目实战-优雅草卓伊凡
|
9月前
|
JavaScript 前端开发 API
|
JavaScript 前端开发 程序员
前端原生Js批量修改页面元素属性的2个方法
原生 Js 的 getElementsByClassName 和 querySelectorAll 都能获取批量的页面元素,但是它们之间有些细微的差别,稍不注意,就很容易弄错!
312 1
|
8月前
|
前端开发
前端使用正则表达式检查是否为十六进制字符串
前端使用正则表达式检查是否为十六进制字符串
214 6
|
9月前
|
前端开发 JavaScript 数据可视化
58K star!这个让网页动起来的JS库,前端工程师直呼真香!
Anime.js 是一款轻量级但功能强大的JavaScript动画引擎,它能够以最简单的方式为网页元素添加令人惊艳的动效。这个项目在GitHub上已经获得58,000+星标,被广泛应用于电商页面、数据可视化、游戏开发等场景。
362 8
|
10月前
|
资源调度 JavaScript 前端开发
前端开发必备!Node.js 18.x LTS保姆级安装教程(附国内镜像源配置)
本文详细介绍了Node.js的安装与配置流程,涵盖环境准备、版本选择(推荐LTS版v18.x)、安装步骤(路径设置、组件选择)、环境验证(命令测试、镜像加速)及常见问题解决方法。同时推荐开发工具链,如VS Code、Yarn等,并提供常用全局包安装指南,帮助开发者快速搭建高效稳定的JavaScript开发环境。内容基于官方正版软件,确保合规性与安全性。
9811 23
|
11月前
|
前端开发
【2025优雅草开源计划进行中01】-针对web前端开发初学者使用-优雅草科技官网-纯静态页面html+css+JavaScript可直接下载使用-开源-首页为优雅草吴银满工程师原创-优雅草卓伊凡发布
【2025优雅草开源计划进行中01】-针对web前端开发初学者使用-优雅草科技官网-纯静态页面html+css+JavaScript可直接下载使用-开源-首页为优雅草吴银满工程师原创-优雅草卓伊凡发布
330 1
【2025优雅草开源计划进行中01】-针对web前端开发初学者使用-优雅草科技官网-纯静态页面html+css+JavaScript可直接下载使用-开源-首页为优雅草吴银满工程师原创-优雅草卓伊凡发布
|
JavaScript 前端开发 开发者
JavaScript字符串的常用方法
在JavaScript中,字符串处理是一个非常常见的任务。JavaScript提供了丰富的字符串操作方法,使开发者能够高效地处理和操作字符串。本文将详细介绍JavaScript字符串的常用方法,并提供示例代码以便更好地理解和应用这些方法。
276 13
|
JavaScript 前端开发 Java
springboot解决js前端跨域问题,javascript跨域问题解决
本文介绍了如何在Spring Boot项目中编写Filter过滤器以处理跨域问题,并通过一个示例展示了使用JavaScript进行跨域请求的方法。首先,在Spring Boot应用中添加一个实现了`Filter`接口的类,设置响应头允许所有来源的跨域请求。接着,通过一个简单的HTML页面和jQuery发送AJAX请求到指定URL,验证跨域请求是否成功。文中还提供了请求成功的响应数据样例及请求效果截图。
223 3
springboot解决js前端跨域问题,javascript跨域问题解决
|
缓存 JavaScript 前端开发
JavaScript 与 DOM 交互的基础及进阶技巧,涵盖 DOM 获取、修改、创建、删除元素的方法,事件处理,性能优化及与其他前端技术的结合,助你构建动态交互的网页应用
本文深入讲解了 JavaScript 与 DOM 交互的基础及进阶技巧,涵盖 DOM 获取、修改、创建、删除元素的方法,事件处理,性能优化及与其他前端技术的结合,助你构建动态交互的网页应用。
490 5

热门文章

最新文章

  • 1
    前端如何存储数据:Cookie、LocalStorage 与 SessionStorage 全面解析
    691
  • 2
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(九):强势分析Animation动画各类参数;从播放时间、播放方式、播放次数、播放方向、播放状态等多个方面,完全了解CSS3 Animation
    289
  • 3
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(八):学习transition过渡属性;本文学习property模拟、duration过渡时间指定、delay时间延迟 等多个参数
    254
  • 4
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(七):学习ransform属性;本文学习 rotate旋转、scale缩放、skew扭曲、tanslate移动、matrix矩阵 多个参数
    204
  • 5
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(六):全方面分析css的Flex布局,从纵、横两个坐标开始进行居中、两端等元素分布模式;刨析元素间隔、排序模式等
    309
  • 6
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(五):背景属性;float浮动和position定位;详细分析相对、绝对、固定三种定位方式;使用浮动并清除浮动副作用
    451
  • 7
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(四):元素盒子模型;详细分析边框属性、盒子外边距
    198
  • 8
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(三):元素继承关系、层叠样式规则、字体属性、文本属性;针对字体和文本作样式修改
    144
  • 9
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(二):CSS伪类:UI伪类、结构化伪类;通过伪类获得子元素的第n个元素;创建一个伪元素展示在页面中;获得最后一个元素;处理聚焦元素的样式
    210
  • 10
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(一):CSS发展史;CSS样式表的引入;CSS选择器使用,附带案例介绍
    284