javascript 判断是否为字符串-JavaScript – Day7 – es5 和字符串

1.ES5

js形成的时候比较早,当时web需求比较少,所以一开始的js功能比较少,语法也不是很严谨。 随着时代的发展和Web应用的普及,js需要更多的功能和更严谨的句型,所以js会有版本升级。 js的第一个版本是ECMA最初统一标准后的版本。 我们今天使用的大多数句型都是 ECMAScript 第 3 版,简称 es3。 到目前为止,已有es7、8、9、甚至es10的版本。 近年来基本上每年都有新的版本更新。

每个版本更新都需要浏览器支持才能运行,但js更新后浏览器不会立即更新。 因此,有些版本发布后,浏览器需要很长时间才能与其兼容。 到目前为止,我们认为 es5 是兼容性最好的版本。

与我们现在使用的es3相比,es5在语法上没有变化。 它添加了严格模式和一些字段方法。

1. 概念

(1) ECMAScript 版本 5

(2) 被公认为兼容性最好的版本

(3)在我们以后的项目中javascript 判断是否为字符,实际运行的代码是es5代码。

2. 严格模式

(一)概念

因为js作用域、变量隐式声明等句型会导致很多意想不到的错误,所以ES5中增加了严格模式句型,以严格规范代码的编写。严格模式就是严格限制不合理的句型。

(2)运用句型

字符串-'使用严格'

1.写在全局的底部-----可以约束整个页面

2.写在最下面的部分-----只能约束本地代码

应该放在代码的最前面,即script标签中的第一行或者函数中的第一行,否则无效; 严格模式可以规范当前脚本标签或当前函数中的代码,但不能规范当前函数中的代码。 其他脚本标签和其他函数中的代码

(3)有哪些限制?

1、定义变量时不允许省略var

2.不允许有同名的数组

3.普通函数中的this不允许代表窗口

(4) this关键字

js中有一个关键字叫做this。 this关键字代表一个变量,不同作用域代表的值是不同的。

1.全局this-window

2.修复了非严格模式下普通函数中的this-window

3.严格模式下普通函数中的this-undefined

(5)严格模式的优点

1、消除一些不合理的句型javascript 判断是否为字符串,避免未知错误

2.代码更规范,运行效率更高

2. 字符串

1.重新理解

(1)字符串可以带下标——可以带下标进行遍历

(2)字符串有长度宽度,并且字符串中的长度不允许改变。

(3) 字符串是只读数据,不允许更改、删除或添加字符。

2. 比较

(1)字符串的比较规则是逐字符比较

字符串可以比较大小,汉字也是字符串,汉字也可以比较大小:

console.log('我'>'你') // true
console.log('你'>'我') // false

汉字的大小是由unicode决定的。

Asker码共有128个,包括符号、大小写汉字、数字。 Askercode是德国人创建的,所以对英语的支持非常好。 后来随着计算机的普及,各个国家在使用计算机时都无法使用自己的语言,导致使用起来非常困难。 因此,许多国家的科学家共同制定了一个更大的对照表,其中包括各个国家的文字符号,因此被称为通用代码,也称为Unicode。

事实上,unicode是一个更大的Asker码。

(2) 大小由Ask代码决定

0~9 -------- 48~57

A~Z -------- 65~90

a~z -------- 97~122

(3)字符串模式

1.charAt——通过指定下标获取对应的字符

语法:String.charAt(下标) - 返回字符

2.charCodeAt——通过指定下标获取对应字符的Asker码

语法: string.charCodeAt(subscript) - 返回字符对应的 Asker 代码

3.String.fromCharCode——通过指定的Asker code获取对应的字符

语法:String.fromCharCode(Asker code) - 返回字符

4.startsWith - 判断字符串是以某个字符开头还是以小字符串开头

语法: string.startsWith(字符/小字符串) - 返回布尔值

5.endsWith - 确定字符串是否以某个字符或小字符串结尾

语法: string.endsWith(字符/小字符串) - 返回布尔值

6.includes——判断字符串是否包含某个字符或者小字符串

语法: string.includes(character/small string) - 返回布尔值

7.replace——替换字符串中的指定段

语法:string.replace(替换的短段落,新内容)——返回替换的字符串

(1) 如果参数1为空,则新的内容将添加到原字符串的前面。

8.indexOf - 查找字符串中第一次出现的字符或小字符串的索引

语法: string.indexOf(character/small string) - 如果找到,返回索引,如果没有找到,返回-1

第二个参数表示从哪个下标开始查找

var str = 'abcdababefcd'
var idx = str.indexOf('a', 2) // 参数a为要查找的字符,参数2为开始查找的下标
console.log(idx);

9.lastIndexOf - 查找字符串中最后一次出现的小字符串或字符的索引

语法: string.lastIndexOf(character/small string) - 如果找到则返回下标,如果没有找到则返回-1

第二个参数表示将下标视为字符串的结尾。

var str = 'abcdababefcd'
var idx = str.lastIndexOf('ab', 5) /* 将下标5当做字符串末尾,查找字符ab在字符串中最后一次
                                                                        出现的下标 */
console.log(idx);

10.trim - 删除字符串左右两侧的空格字符

语法: string.trim()

11.trimLeft - 删除右侧的空格

语法:String.trimLeft()

javascript 判断是否为字符串_js判断是否为小数_js判断字符是否为汉字

12.trimRight - 删除右侧的空格

语法:String.trimRight()

13.toUpperCase - 将所有字符转换为小写

语法:String.toUpperCase()

14.toLowerCase - 转换为大写

语法:String.toLowerCase()

15.split——使用指定分隔符组成链表

语法: string.split(separator) - 返回链表

(1) split的第二个参数是一个数字,表示我们要保留链表中的前几个元素

(2) 如果不添加参数,则默认将整个字符串视为一个元素,放入链表中。

(3) 如果使用空字符串作为分隔符,则每个字符将作为形参的一个元素。

16.slice-截取字符串

语法: string.slice(start subscript, end subscript) - 返回一小段字符串

(1) 换行前但不是换行后(不包括结束下标)

(2)省略第二个参数表示拦截到底

(3)当省略第二个参数时,第一个参数也可以省略——从头到尾截取

(4)下标可以用正数表示,-3表示倒数第三个字符,-1表示倒数第一个字符

(5) 如果起始下标大于结束下标,则截取为空。

17.substr - 截取字符串

语法:string.substr(起始下标,截取的字符串宽度) - 返回一个短段落

(1)省略第二个参数,默认截取到最后

(2) 开始拦截的下标可以表示为正数

(3) 如果长度超过最大下标,则相当于省略参数2

18.substring - 截取字符串

语法: string.substring(开始下标, 结束下标) - 返回一个短段落

(1)包裹正面而不是背面

(2)省略第二个参数表示切到最后

(3) 如果起始下标和结束下标相等,则截取空字符串

(4) 如果起始下标小于结束下标,则先交换两个参数位置,然后截取

(5)如果起始下标或结束下标为正数,则先替换为0,然后开始截取

3.字符串很常见

(1) 字符串翻转——将“I Love You”转换为“You Love I”

// 将`'I Love You'`转换成`'You Love I'`
var str = 'I Love You'.split(' ').reverse().join(' ')
console.log(str);

(2) 过滤字符串中的敏感词

var str = "无论多大麻烦,黑夜总会过去";
var arr = ['大麻', '夜总会']
for(var a = 0; a < arr.length; a++) {
    var s = ''
    for(var b = 0; b < arr[a].length; b++) {
        s += '*'
    }
    str = str.replace(arr[a], s)
}
console.log(str);

(3)字符串去重

var str = 'aabbbccaaddd'
// 方法1.将重复的删除
// ①转成数组,去重再转成字符串
// ②利用字符串替换,将重复字符换成空字符,但是必须保留后面的字符,去除前面的重复
str.replace(str[1])
for(var a = str.length - 1; a >= 0; a--) {
    // str[a]跟他前面所有字符比较
    for(var b = 0; b < a; b++) {
        if(str[a] === str[b]) {
            str = str.replace(str[b], '')
        }
    }
}
console.log(str);
// 方法2.将不重复的放在新字符串中
var newStr = ''
for(var a = 0; a < str.length; a++) {
    if( !newStr.includes(str[a]) ) {
        newStr += str[a]
    }
}
console.log(newStr);
// 方法3.利用对象去重
var obj = {}
for(var a = 0; a < str.length; a++) {
    obj[ str[a] ] = str[a]
}
console.log(obj);
var newStr = ''
for(var key in obj) {
    newStr += obj[key]
}
console.log(newStr);

(3) 统计字符串中每个字符的个数

// 方法1.利用循环去统计
var str = 'aabbbccaaddde'
// 先将str去重 - 再统计
var newStr = 'abcde'
for(var a = 0; a < newStr.length; a++) {
    str[a]
    var k = 0 // 定义计数器,用于统计当前str[a]的次数
    for(var b = 0; b < str.length; b++) {
        if(newStr[a] === str[b]) {
            k++
        }
    }
    console.log(newStr[a] + '出现了' + k + '次');
}
// 方法2.利用indexOf找到就是下标,找不到就是-1,第二个参数代表从哪里开始找
var str = 'aabbbccaaddde'
// 先将str去重 - 再统计
var newStr = 'abcde'
var index = 0
var k = 0
while(true) {
    index = str.indexOf(newStr[0], index)
    if(index === -1) {
        break
    } else {
        k++
        index++
    }
}
console.log(newStr[0] + '出现了' + k + '次');
// 方法2代码优化
var str = 'aabbbccaaddde'
// 先将str去重 - 再统计
var newStr = 'abcde'
for(var a = 0; a < newStr.length; a++) {
    var index = 0
    var k = 0
    while(index != -1) {
        index = str.indexOf(newStr[a], index)
        if(index != -1) {
            k++
            index++
        }
    }
    console.log(newStr[a] + '出现了' + k + '次');
}
// 方法3.对象去重并统计
var str = 'aabbbccaaddde'
var obj = {}
for(var a = 0; a < str.length; a++) {
    if(obj[str[a]] === undefined) {
        obj[str[a]] = 1
    } else {
        obj[str[a]]++
}
console.log(obj);
// 方法3代码优化
var str = 'aabbbccaaddde'
var obj = {}
for(var a = 0; a < str.length; a++) {
    obj[str[a]] = obj[str[a]] ? obj[str[a]] + 1 : 1
}
console.log(obj);