【Javascript学习笔记】3.数据类型String

本文介绍了JavaScript中的数据类型,重点讲解了字符串(String)的基本操作和转换方法,如toString()、字符串拼接、截取方法substr、substring和slice,以及indexOf、lastIndexOf和includes等。此外,还探讨了如何通过toUpperCase和toLowerCase进行大小写转换,split方法用于拆分字符串,以及replace方法进行简单的字符串替换。最后,提到了获取URL参数和生成随机验证码等实用技巧。
摘要由CSDN通过智能技术生成

基本数据类型

  • 数字Number
  • 字符串String
  • 布尔Boolean
  • 空对象指针Null
  • 未定义undefined

引用数据类型

  • 对象数据类型Object
    • {} 普通对象
    • [] 数组对象
    • 正则对象
    • Math数学函数对象
    • 日期对象
  • 函数数据类型Function

String

把其他类型转为字符串

  • [val].toString()
  • 字符串拼接

1. [val].toString()

基本类型
在这里插入图片描述
※ null和undefined禁止直接toString()
在这里插入图片描述
引用类型

数组
在这里插入图片描述

※ 普通对象.toString()的结果是"[object Object]"

Object.prototype.toString()方法不是转化为字符串,而是用来检测数据类型。
在这里插入图片描述
2. 字符串拼接

“+”可以作为字符串拼接符
在这里插入图片描述
举个栗子

let a = 10 + null + true + [] + undefined + '哈哈' + null + [] + 10 + false
console.log(a)

分析过程:
10 + null => 10 + 0 => 10
10 + true => 10 + 1 => 11
11 + [] => 11 + ‘’ => ‘11’ (引用类型转化为数字,是先将其toString()转为字符串 -> 空数组变为空字符串后,直接与11拼接)
‘11’ + undefined => ‘11undefined’
‘11undefined’ + ‘哈哈’ + null => ‘11undefined哈哈null’
‘11undefined哈哈null’ + [] => ‘11undefined哈哈null’ + ‘’
‘11undefined哈哈null’ + 10 + false => 11undefined哈哈null10false

另外:

let a = true + null + 10 + undefined 
console.log(a)

※ 结果是NaN,因为 undefined 在转为Number后,是NaN

字符串中常用方法

基本方法:

let str = 'sfasdadgadgasdfadghj';

str.length //=> 字符串长度
str[0] //=> 获取第一个字符

//循环输出每个字符
for(let i=0;i<str.length;i++)
{
	let char = str[i];
	console.log(char);
}

//获取指定位置的字符
console.log(str.charAt(4));
//d
console.log(str.charAt(1000));
//""

//获取指定位置的字符ASCII值
console.log(str.charAt(4));
//100
console.log(str.charAt(1000));
//NaN

1. 字符串截取 substr / substring / slice

  • substr(n,m) 从索引n开始截取m个字符
  • substring(n,m) 从索引n开始找到索引为m处,不含m
  • slice(n,m) 和substring一样,都是找到索引m处,但它可以支持负数为索引

m不写截取至末尾

let str = 'sfasdadgadgasdfadghj';
console.log(str.substr(3,7)); //sdadgad
console.log(str.substring(3,7));//sdad
console.log(str.slice(3,7));//sdad

console.log(str.substring(-7,-3));//""
console.log(str.slice(-7,-3));//dfad

2. 验证字符是否存在 indexOf / lastIndexOf

  • indexOf(x,y) 获取x第一次出现位置的索引,y是控制查找的起始位置索引
  • lastIndexOf(x) 最后次出现位置的索引
  • includes
    没有这个字符,返回-1
let str = 'abcdefg';

console.log(str.indexOf('bc')); //1
console.log(str.indexOf('a',5));//-1

console.log(str.includes('@')) //false

3. 字母大小写转换 toUpperCase / toLowerCase

  • str.toUpperCase() 转大写
  • str.toLowerCase() 转小写

将第一个字母转为大写

let str = 'sfasdadgadgasdfadghj';
str = str.substr(0,1).toLocaleUpperCase() + str.substr(1);
console.log(str);
//Sfasdadgadgasdfadghj

3. 把字符串按指定的分隔符拆分为数组 split (和数组中的join相反)

let str = '哈哈|呵呵|嘻嘻';
console.log(str.split('|'));
// ["哈哈", "呵呵", "嘻嘻"]

4. 字符串替换 replace

  • replace(老字符,新字符)

在不使用正则的情况下,每次只替换一个字符

let str = '哈哈@呵呵@嘻嘻';
console.log(str.replace('@',','));
//哈哈,呵呵@嘻嘻

console.log(str.replace(/@/g,','));
//哈哈,呵呵,嘻嘻

实现一些常用的需求

1. 获取一个URL地址问号后面传递的参数信息 queryURLParammeter

let str = 'https://www.bilibili.com/video/BV1R442?p=16&name=limy&en=leopard#box';
let str1 = 'https://www.bilibili.com/video/BV1R442#box';
let str2 = 'https://www.bilibili.com/video/BV1R442?p=16&name=limy&en=leopard';
let str3 = 'https://www.bilibili.com/video/BV1R442';

//普通方法
function getQueryURLParams(url){
    let result = {};
    let str = url;
    if(str.includes('#'))
    {
        result['HASH'] = str.split('#')[1];
        str = str.split('#')[0];
    }

    if(str.includes('?'))
    {
        str = str.split('?')[1];
        let askArr = str.split('&');
        askArr.forEach(element => {
            result[element.split('=')[0]] = element.split('=')[1];
        });

    }

    return result;

}

//正则
function getQueryURLParams(url){
    let result = {};
    let reg1 = /([^?=&#]+)=([^?=&#]+)/g,
    	reg2 = /#([^?=&#]+)/g;
    url.replace(reg1,(n,x,y) => result[x] = y);
    url.replace(reg2,(n,x) => result['HASH'] = x);
	return result;
}

console.log(getQueryURLParams(str));
//{HASH: "box", p: "16", name: "limy", en: "leopard"}
console.log(getQueryURLParams(str1));
//{HASH: "box"}
console.log(getQueryURLParams(str2));
//{p: "16", name: "limy", en: "leopard"}
console.log(getQueryURLParams(str3));
//{}

2.四位随机验证码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值