ES6 字符串扩展+正则扩展+数值扩展

模版字符串

``反引号表示

    var cyy={
        name:"cyy",
        age:18,
        say:function(){
            console.log('我叫'+this.name+',我今年'+this.age+'岁');
        },
        say2:function(){
            console.log(`我叫`+this.name+`,我今年`+this.age+`岁`);//模板字符串可以替代单引号或者双引号
        },
        say3:function(){
            console.log(`我叫${ this.name },我今年${ this.age }岁`);//可以用${}替代字符串拼接
        },
        say4:function(){
            console.log(`我叫${ `Miss ${this.name}` },我今年${ this.age }岁`);//${}可以嵌套
        },
        say5:function(){
            console.log(`我叫${ `Miss ${this.name.toUpperCase()}` },我今年${ this.age }岁`);//${}可以使用字符串方法
        }
    }
    cyy.say();
    cyy.say2();
    cyy.say3();
    cyy.say4();
    cyy.say5();

 

 

普通方式渲染数据

//模拟ajax获取到数据
function getList(){
    //ajax
    
    return {
        status:true,
        msg:"获取成功",
        data:[{
            id:1,
            title:"title1",
            date:"date1"
        },{
            id:2,
            title:"title2",
            date:"date2"
        },{
            id:3,
            title:"title3",
            date:"date3"
        }]
    };
}

//结构赋值获取数据(给data取别名listData)
const {data:listData,msg,status}=getList();

if(status){
    let arr=[];

    //循环获取数据
    listData.forEach(function({title,date}){
        //普通方式渲染数据
        arr.push('<li>\
                    <span>'+title+'</span>\
                    <span>'+date+'</span>\
                </li>');
    })

    let ul=document.createElement("ul");
    //join数组转字符串
    //arr.join('') 则字符串直接拼接
    //arr.join() 字符串会用逗号分隔 
    ul.innerHTML=arr.join('');
    document.body.appendChild(ul);

}else{
    alert(msg);
}

 

使用模板字符串渲染数据(可以直接换行,不用转义)

//模拟ajax获取到数据
function getList(){
    //ajax
    
    return {
        status:true,
        msg:"获取成功",
        data:[{
            id:1,
            title:"title1",
            date:"date1"
        },{
            id:2,
            title:"title2",
            date:"date2"
        },{
            id:3,
            title:"title3",
            date:"date3"
        }]
    };
}

//结构赋值获取数据(给data取别名listData)
const {data:listData,msg,status}=getList();

if(status){
    let arr=[];

    //循环获取数据
    listData.forEach(function({title,date}){
        //模板字符串渲染数据
        arr.push(`<li>
                    <span>${ title }</span>
                    <span>${ date }</span>
                </li>`);
    })

    let ul=document.createElement("ul");
    //join数组转字符串
    //arr.join('') 则字符串直接拼接
    //arr.join() 字符串会用逗号分隔 
    ul.innerHTML=arr.join('');
    document.body.appendChild(ul);

}else{
    alert(msg);
}

 

 

还可以进一步对模板字符串进行处理

//模拟ajax获取到数据
function getList(){
    //ajax
    
    return {
        status:true,
        msg:"获取成功",
        data:[{
            id:1,
            title:"title1",
            date:"date1"
        },{
            id:2,
            title:"title2",
            date:"date2"
        },{
            id:3,
            title:"title3",
            date:"date3"
        }]
    };
}

//结构赋值获取数据(给data取别名listData)
const {data:listData,msg,status}=getList();

function foo(str){
    return str.replace("date","mydate");
}

if(status){
    let arr=[];

    //循环获取数据
    listData.forEach(function({title,date}){
        //模板字符串渲染数据
        arr.push(`<li>
                    <span>${ `课程名 ${ title }` }</span>
                    <span>${ foo(date) }</span>
                </li>`);
    })

    let ul=document.createElement("ul");
    //join数组转字符串
    //arr.join('') 则字符串直接拼接
    //arr.join() 字符串会用逗号分隔 
    ul.innerHTML=arr.join('');
    document.body.appendChild(ul);

}else{
    alert(msg);
}

 

 

字符串部分新的方法

padStart padEnd 补全字符串长度

//padStart 从前面补全
//第一个参数是补全后的总长度,第二个参数是用来补全的字符串
let str="cyy";
let str2=str.padStart(8,"nice ");
let str3=str.padStart(13,"nice ");

 

 

//padEnd 从后面补全
//第一个参数是补全后的总长度,第二个参数是用来补全的字符串
let str="cyy";
let str2=str.padEnd(8," nice");
let str3=str.padEnd(13," nice");

 

 

repeat 字符串的重复

{
    let str="c";
    console.log(str.repeat(10));//重复10遍

    let str2="cyy ";
    console.log(str2.repeat(4));//重复4遍
}

 

 需要注意的是,repeat如果传入小于-1的负数,如-3,会报错

如果传入大于-1的负数,如-0.33,会转为0

如果传入小数,如2.55,会取整(向下取整,转为2)

 

自己封装函数来实现类似repeat的功能

{

    console.log(myRepeat("s",10));//重复10遍

    function myRepeat(str,num){
        // 定义数组,元素个数为num+1
        // 然后数组转字符串,用str作为分隔符
        return new Array(num+1).join(str);
    }
}

 

 

startsWith  endsWidth 判断字符串是否以什么开始,以什么结束

{
    let str="i am cyy";
    console.log(str.startsWith("i"));
    console.log(str.endsWith("yy"));
}

 

 

includes 判断存在

indexOf也可以实现类似功能

{
    let str="i am cyy";
    if(str.indexOf("cyy") !== -1){
        console.log(`存在cyy`);
    }

    //~x=!(x+1)  -1会转为0
    if(~str.indexOf("cyy")){
        console.log(`存在cyy`);
    }

    if(str.includes("cyy")){
        console.log(`存在cyy`);
    }
}

 

ES6之前的方式遍历字符串

{
    let str="i am cyy";
    //原来的方式遍历
    for(var i=0,len=str.length;i<len;i++){
        console.log(str[i]);
        //charAt 也可以通过下标返回字符
        console.log(str.charAt(i));
    }
    
}

 

 

字符串转为数组,使用数组原型的slice

{
    let str="i am cyy";
    //字符串转数组
    let str2=Array.prototype.slice.call(str);
    console.log(str2);

    let str3=str.split("");
    console.log(str3);

    //扩展运算符
    let str4=[...str];
    console.log(str4);

    //扩展运算符2
    let [...str5]=str;
    console.log(str5);

    //遍历数组
    str5.forEach(function(w){
        console.log(w);
    })
    
}

 

 

for in 遍历对象或者数组的属性

for of  ES6新增,只能遍历数组,不能遍历对象

forEach 只遍历数组,不能遍历对象

for  遍历数组常用

 

遍历操作字符串(使用数组方式)

对字符串中的大写字母进行加密

{
    //方法一
    const map={
        A:"100",
        B:"99",
        C:"98",
        D:"97",
        E:"96",
        F:"95",
        G:"94"
    };
    const words="ABCDEFG";
    
    let str="I AM CYY";
    let ostr=[...str];//字符串转数组

    ostr.forEach(function(word,index){
        if(words.includes(word)){
            ostr[index]=map[word];
        }
    })
    console.log(ostr);
    console.log(ostr.join(""));//拼接回字符串
}

 

 

使用for of遍历字符串

    //for of遍历字符串
    let str="I AM CYY";
    for(let s of str){
        console.log(s);
    }

 

 

使用for of实现数据加密

{

    //for of实现字符加密
    const map={
        A:"100",
        B:"99",
        C:"98",
        D:"97",
        E:"96",
        F:"95",
        G:"94"
    };
    const words="ABCDEFG";
    
    let str="I AM CYY";
    let nstr="";

    for(let s of str){
        if(words.includes(s)){
            nstr+=map[s];
        }else{
            nstr+=s;
        }
    }

    console.log(nstr);
}

 

 

 

unicode表示法

{

    //unicode码点  \u
    //一般只会识别0000-ffff
    //因为会识别四位,\u1f43是ὃ,后面跟上6
    let str="\u1f436";
    console.log(str);

    //ES6允许码点带上花括号,这样就会识别全部码点,不会在四位截断
    let str2="\u{1f436}";
    console.log(str2);
}

 

 

在控制台输入测试的时候,记得带上引号

 

 

codePointAt 获取字符串中某个字符对应的码点

{

    //unicode码点  \u
    //一般只会识别0000-ffff
    //因为会识别四位,\u1f43是ὃ,后面跟上6
    let str="\u1f436";
    console.log(str);

    //ES6允许码点带上花括号,这样就会识别全部码点,不会在四位截断
    let str2="\u{1f436}";
    console.log(str2);

    console.log("
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SQLAlchemy 是一个 SQL 工具包和对象关系映射(ORM)库,用于 Python 编程语言。它提供了一个高级的 SQL 工具和对象关系映射工具,允许开发者以 Python 类和对象的形式操作数据库,而无需编写大量的 SQL 语句。SQLAlchemy 建立在 DBAPI 之上,支持多种数据库后端,如 SQLite, MySQL, PostgreSQL 等。 SQLAlchemy 的核心功能: 对象关系映射(ORM): SQLAlchemy 允许开发者使用 Python 类来表示数据库表,使用类的实例表示表中的行。 开发者可以定义类之间的关系(如一对多、多对多),SQLAlchemy 会自动处理这些关系在数据库中的映射。 通过 ORM,开发者可以像操作 Python 对象一样操作数据库,这大大简化了数据库操作的复杂性。 表达式语言: SQLAlchemy 提供了一个丰富的 SQL 表达式语言,允许开发者以 Python 表达式的方式编写复杂的 SQL 查询。 表达式语言提供了对 SQL 语句的灵活控制,同时保持了代码的可读性和可维护性。 数据库引擎和连接池: SQLAlchemy 支持多种数据库后端,并且为每种后端提供了对应的数据库引擎。 它还提供了连接池管理功能,以优化数据库连接的创建、使用和释放。 会话管理: SQLAlchemy 使用会话(Session)来管理对象的持久化状态。 会话提供了一个工作单元(unit of work)和身份映射(identity map)的概念,使得对象的状态管理和查询更加高效。 事件系统: SQLAlchemy 提供了一个事件系统,允许开发者在 ORM 的各个生命周期阶段插入自定义的钩子函数。 这使得开发者可以在对象加载、修改、删除等操作时执行额外的逻辑。
SQLAlchemy 是一个 SQL 工具包和对象关系映射(ORM)库,用于 Python 编程语言。它提供了一个高级的 SQL 工具和对象关系映射工具,允许开发者以 Python 类和对象的形式操作数据库,而无需编写大量的 SQL 语句。SQLAlchemy 建立在 DBAPI 之上,支持多种数据库后端,如 SQLite, MySQL, PostgreSQL 等。 SQLAlchemy 的核心功能: 对象关系映射(ORM): SQLAlchemy 允许开发者使用 Python 类来表示数据库表,使用类的实例表示表中的行。 开发者可以定义类之间的关系(如一对多、多对多),SQLAlchemy 会自动处理这些关系在数据库中的映射。 通过 ORM,开发者可以像操作 Python 对象一样操作数据库,这大大简化了数据库操作的复杂性。 表达式语言: SQLAlchemy 提供了一个丰富的 SQL 表达式语言,允许开发者以 Python 表达式的方式编写复杂的 SQL 查询。 表达式语言提供了对 SQL 语句的灵活控制,同时保持了代码的可读性和可维护性。 数据库引擎和连接池: SQLAlchemy 支持多种数据库后端,并且为每种后端提供了对应的数据库引擎。 它还提供了连接池管理功能,以优化数据库连接的创建、使用和释放。 会话管理: SQLAlchemy 使用会话(Session)来管理对象的持久化状态。 会话提供了一个工作单元(unit of work)和身份映射(identity map)的概念,使得对象的状态管理和查询更加高效。 事件系统: SQLAlchemy 提供了一个事件系统,允许开发者在 ORM 的各个生命周期阶段插入自定义的钩子函数。 这使得开发者可以在对象加载、修改、删除等操作时执行额外的逻辑。
GeoPandas是一个开源的Python库,旨在简化地理空间数据的处理和分析。它结合了Pandas和Shapely的能力,为Python用户提供了一个强大而灵活的工具来处理地理空间数据。以下是关于GeoPandas的详细介绍: 一、GeoPandas的基本概念 1. 定义 GeoPandas是建立在Pandas和Shapely之上的一个Python库,用于处理和分析地理空间数据。 它扩展了Pandas的DataFrame和Series数据结构,允许在其中存储和操作地理空间几何图形。 2. 核心数据结构 GeoDataFrame:GeoPandas的核心数据结构,是Pandas DataFrame的扩展。它包含一个或多个列,其中至少一列是几何列(geometry column),用于存储地理空间几何图形(如点、线、多边形等)。 GeoSeries:GeoPandas中的另一个重要数据结构,类似于Pandas的Series,但用于存储几何图形序列。 二、GeoPandas的功能特性 1. 读取和写入多种地理空间数据格式 GeoPandas支持读取和写入多种常见的地理空间数据格式,包括Shapefile、GeoJSON、PostGIS、KML等。这使得用户可以轻松地从各种数据源中加载地理空间数据,并将处理后的数据保存为所需的格式。 2. 地理空间几何图形的创建、编辑和分析 GeoPandas允许用户创建、编辑和分析地理空间几何图形,包括点、线、多边形等。它提供了丰富的空间操作函数,如缓冲区分析、交集、并集、差集等,使得用户可以方便地进行地理空间数据分析。 3. 数据可视化 GeoPandas内置了数据可视化功能,可以绘制地理空间数据的地图。用户可以使用matplotlib等库来进一步定制地图的样式和布局。 4. 空间连接和空间索引 GeoPandas支持空间连接操作,可以将两个GeoDataFrame按照空间关系(如相交、包含等)进行连接。此外,它还支持空间索引,可以提高地理空间数据查询的效率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值