第三章_字符串和对象

第三章_字符串和对象

1. 字符串的常见操作

length 获取字符串长度
this[0] 使用索引获取单个字符,不能修改
// 定义字符串
var str = "Hello_world_html_javascript";
console.log(str.length);
console.log(str[0]);
// 输出每一个字符
for (let i = 0; i < str.length; i++) {
    console.log(str[i]);
}

大小写转换 toUpperCase() toLowerCase()(把字母转换成大写字母 对原字符串没有影响,返回新的字符串
var str = "Hello_world_html_javascript";
// 大写
upperStr = str.toUpperCase();
// 小写
lowerStr = str.toLowerCase();

字符串连接加法(原字符串不会被修改)
var str = "Hello_world_html_javascript";
newStr = str + " kitty";
console.log(str);       // 原
console.log(newStr);    // 新

查找字符串 indexOF(字符串,索引),查找范围
  • 找到返回元素对应下标
  • 没找到返回 -1
var str = "Hello_world_html_javascript";
ofStr = str.indexOf("llo");
console.log(ofStr);// 2

字符串拼接 concat() (原字符串不会被修改)
var str = "Hello_world_html_javascript";
var str3 = str.concat("\nABCD");
console.log(str3);

字符串切割 slice(开始下标,结束下标) 包含开始,不包含结尾
  • 开始:超出返回空
  • 结尾:超出返回到字符串末尾
var str = "Hello_world_html_javascript";
sliceStr = str.slice(1, 4 + 1);
console.log(sliceStr);
// 负数,从后面开始数
sliceStr2 = str.slice(-4, -1);
console.log(sliceStr2);

字符串切割 substring(起始,?末尾)
  • 方法用于提取字符串中介于两个指定下标之间的字符。
  • 方法返回的子串包括 开始 处的字符,但不包括 结束 处的字符。
var str = "Hello_world_html_javascript";
// 返回下标为 3 4 5 6 的字符 lo_w
var a = str.substring(3, 7);

// 只给开始。返回去除前 3 位的字符串
// 因为没有给末尾,所有末尾就是字符串的结尾下标
// 4 5 6 ...末尾的字符 lo_world_html_javascript
var b = str.substring(3);

字符串截取 substr(起始,字符个数)
var str = "Hello_world_html_javascript";
// 返回除去前 5 个字符的字符串 _world_html_javascript
var a = str.substr(5);
// 表示除去前 5 个字符的字符串,只要 5 个 _worl
var b = str.substr(5, 5); 

字符串拆分 split(拆分字符,?返回的个数(重载))
  • 返回值是一个数组、
  • 参数2:指定返回数组里面的元素个数
var str = "Hello_world_html_javascript";

// ["Hello","world","html","javascript"]
var str_arr = str.split("_");

// ["Hello"]
var str_arr2 = str.split("_",1);

去除前后空格 trim()
var unerName = " zhon li ";
// "zhon li"
var newUserName = unerName.trim();

字符串替换,替换首个 replace(要替换的字符, 替换的字符)
var str = "Hello_world_html_javascript";
// Hello*world_html_javascript
var replaceArr = str.replace("_", "*");

字符串数组每个元素连接成一个字符串 join(连接字符,不加默认为 , 号)
// hello-world
const strings = ['hello','world'].join("-");

2. 正则表达式

正则搜索字符串
  • 正则表达式主题 /表达式/修饰符
  • i 表示忽略大小写ignore
  • g 符合的global
  • m 多行匹配multiple
search(正则 / 字符串)
  • 成功:返回下标
  • 失败:返回 -1
// 定义一个正则表达式
var p1 = /ab/ig;// 匹配值:ab AB
var str = "Hello_World_ab_AB_hello.com ab";
console.log(str.search(p1));    // 12
console.log(str.search("AB"));  // 15

正则替换 replace(正则 / 字符串 , 替换字符)
  • 正则使用 g 修饰符,替换全部
var p1 = /ab/ig;// 匹配值:ab AB
var str = "Hello_World_ab_AB_hello.com ab";

// Hello_World_12345_AB_hello.com ab
console.log(str.replace("ab", "12345"));

// Hello_World_12345_12345_hello.com 12345
console.log(str.replace(p1, "12345"));

正则表达式,判断整个字符串 test(字符串)
  • 一般用于判断字符串格式是否合法等,比如手机号,邮箱
var p1 = /ab/ig;// 匹配值:ab AB
var str = "Hello_World_ab_AB_hello.com ab";
// true
console.log(p1.test(str));

正则符号
  • ^ 以开头 、$ 以结尾
var p1 = /^a$/ // 开头为 a,结尾为 a
console.log(p1.test("a")); // true
console.log(p1.test("1a")); // false
  • [] 取值范围
  • [1-5] 范围: 1 ~ 5
  • [a-z] 范围:小写字母 a ~ z
// 以 数字开头,以小写字母结尾
var p1 = /^[1-5][a-z]$/; //两个字符
console.log(p1.test("1a")); // true

正则元字符
  • \d 代表数字 [0 - 9]
// 包含数字即可
var p1 = /\d/;
console.log(p1.test("a1a")); // true

正整数
  • [1-9] 开始 1 ~ 9
  • [0-9] 结尾 0 ~ 9
  • \d* 匹配任意数量的数字字符

因此,这个正则表达式可以匹配一连串的数字,但必须以非零的数字开头,不能包含任何非数字字符。

var p1 = /^[1-9]\d*$/;
console.log(p1.test("100")); // true
console.log(p1.test("-10")); // false
console.log(p1.test("299")); // true
console.log(p1.test("3"));   // true

任意个 a 开头
  • * 表示前面的可有可无
  • + 量词,表示数量
var p1 = /^a+/;
console.log(p1.test("a"));
console.log(p1.test("aab"));
console.log(p1.test("b"));
console.log(p1.test("ba"));

匹配QQ号、数字
  • ^[1-9] 以 1 ~ 9 开头
  • + 表示前面的字符集合中的字符可以重复出现一次或多次
  • {1,2} 结尾得字符串长度 1 ~ 2
var p1 = /^[1-9][0-9]+$/
console.log(p1.test("10")); // true
console.log(p1.test("0")); // false
console.log(p1.test("22265")); // true
console.log(p1.test("100")); // true
// 指定长度
var p2 = /^[1-9][0-9]{1,2}$/
console.log(p2.test("10")); // true
console.log(p2.test("0")); // false
console.log(p2.test("22265")); // false
console.log(p2.test("100")); // true

3. js 创建对象

js 中的对象就是一组组 key : value

方式一:= 对象 { key : value }
  • 访问对象里的成员使用 点 .
var user = {
    name: "钟离",
    age: 2000,
    damage: 5000,
    element: "岩元素"
}
// get
console.log(user.name);
// set
user.damage = 30000;

方式二: 创建一个空对象 new Object()
  • 因为 js 里的对象都继承至 Object
  • 可以使用 点 .,给对象添加新的属性成员(没有就是添加,有就是覆盖)
var user = new Object();
// 添加设置 key value
user.name = "胡桃";
user.age = 18;
user.damage = 10000;
user.element = "火元素";
// get
console.log(user.name);
// set
user.damage = 30000;
方式三:使用对象构造器,构造函数 function + this
  • 可以还函数内部,添加对象属性、对象函数 function this
  • () 里的是构造出 实例对象 时,给的初始值
  • 使用 new 关键字,来创建这个构造函数的 实例对象
  • this 的指向就是构造出来的 实例对象
function Fuser(name, age, damage,element)
{
    // 将创入的至赋值到变量 可以动态添加
    this.name = name;
    this.age = age;
    this.damage = damage;
    this.element = element
    // 函数变量
    this.show = show;
    // 函数定义
    function show()
    {
        console.log("name: " + this.name);
        console.log("age: " + this.age);
        console.log("damage: " + this.damage);
        console.log("element: " + this.element);
    }
    // set age 匿名函数
    this.setAge = function (age)
    {
        this.age = age;
    }
}
// 创建对象变量 实例对象
var fu1 = new Fuser("刻晴", 20, 10000, "雷元素");
var fu2 = new Fuser("烟非", 18, 20000, "火元素");

// 访问对象里的属性
console.log(fu1.name);
console.log(fu1.element);
console.log(fu2.name);
console.log(fu2.element);

// 动态添加函数
fu1.setDamage = function (damage)
{
    // 设置这个对象里的  damage 属性
    this.damage = damage;;
}
fu1.setDamage(50000)
fu1.show();
fu2.show();

遍历对象属性、索引器 (接上面的对象实例)
  • 通过 [key] 索引器, 值为:字符串
  • 也可以[key] 索引器,添加新的属性 (操作跟 点 . 一致
  • 遍历 key in 语句循环,遍历对象的属性、返回属性的键名 key
  • Object.hasOwnProperty.call 检查对象是否包含某个特定属性
// get
console.log(fu1["name"]); // 刻晴
console.log(fu2["name"]); // 烟非

// add sex 属性
fu1["sex"] = '女'

// 输出对象里的每一个属性的 键名 + 值
for (var key in fu1)
{
    console.log(key + ": " + fu1[key]);
}
for (var key in fu2)
{
    console.log(key + ": " + fu2[key]);
}
for (const key in fu1)
{
    // 判断
    if (Object.hasOwnProperty.call(fu1, key))
    {
        const element = fu1[key];
        console.log(element);
    }
}

第四章_表单校验案例

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值