js/javascript 操作字符串【全】(含常用的操作字符串的lodash)

简介: js/javascript 操作字符串【全】(含常用的操作字符串的lodash)

创建字符串 ""

let str = "字符串的内容"

特殊符号使用\进行转义

  • \" 表示 "
  • \' 表示 '
  • \n 表示换行
  • \r 表示回车
  • \t 表示制表符
  • \b 表示空格
  • \\ 表示\

还可以使用转义字符输入Unicode编码

console.log('\u2600')

网页中使用Unicode编码,格式如下:

&#编码;

Unicode编码采用的是16进制,但是,这里的编码需要使用10进制

<h1 style="font-size: 60px;">&#9860;</h1>

获取字符串的长度

str.length

获取字符串的存储长度

英文占一个字符位,其他字符占两个字符位

function getZFWlength(string) {
        var count = 0;
        for (var i = 0; i < string.length; i++) {
            //对每一位字符串进行判断,如果Unicode编码在0-127,计数器+1;否则+2
            if (string.charCodeAt(i) < 128 && string.charCodeAt(i) >= 0) {
                count++;
            } else {
                count += 2;
            }
        }
}

获取字符串的像素长度(显示宽度)

字符串的像素长度,即字符串在页面中的显示宽度,和页面css的 fontSize   fontFamily有关。

计算思路:创建一个用span包裹的字符串标签,其 window.getComputedStyle的计算值 -  offsetWidth 即字符串在页面中的显示宽度

若计算像素高度,原理相同,见注释部分

    // 获取字符串的像素宽度
    function getPXwidth(str, fontSize = "12px", fontFamily = "Microsoft YaHei") {
        var span = document.createElement("span");
        var result = {};
        result.width = span.offsetWidth;
        result.height = span.offsetHeight;
        span.style.visibility = "hidden";
        span.style.fontSize = fontSize;
        span.style.fontFamily = fontFamily;
        span.style.display = "inline-block";
        document.body.appendChild(span);
        if (typeof span.textContent != "undefined") {
            span.textContent = str;
        } else {
            span.innerText = str;
        }
        result.width = parseFloat(window.getComputedStyle(span).width) - result.width;
        // 字符串的显示高度
        // result.height = parseFloat(window.getComputedStyle(span).height) - result.height;
        return result.width;
    }

Unicode 编码转字符

let result1 = String.fromCharCode(72);  // H

获取字符在字符串中的下标

索引值 = str.indexOf(想要查询的字符,查询的起始位置);
  • indexOf() 从前向后查找
  • lastIndexOf()从后向前查找

若字符串含有目标字符,返回其第一次出现的下标;如果没有找到则返回 -1,可用于判断字符串是否包含目标字符。

获取指定位置字符 [] 或 charAt()

str[index]      //  如  str[0]
// 或
字符 = str.charAt(index);

字符串中第一个字符的下标是 0。如果参数 index 不在 [0, string.length) 之间,该方法将返回一个空字符串。

遍历字符串

for(let char of string){
  console.log("字符:"+char);
}


字符串拼接 +

    var name = 'smyhvae';
    var age = '26';
 
    console.log('name:'+name+',age:'+age);   //传统写法
 
    console.log(`name:${name},age:${age}`);  //ES6 写法

字符串重复 repeat

str.repeat(5) //abcabcabcabcabc

字符串截取

slice【推荐】

字符串 = str.slice(开始索引, 结束索引); //两个参数都是索引值。包左不包右。

  • (2, 5) 截取时,包左不包右。
  • (2) 表示从指定的索引位置开始,截取到最后。
  • (-3) 表示从倒数第几个开始,截取到最后。
  • (1, -1) 表示从第2个截取到倒数第一个。
  • (5, 2) 表示前面的大,后面的小,返回值为空。

substring

字符串 = str.substring(开始索引, 结束索引); //两个参数都是索引值。包左不包右。

  • substring()不能接受负值作为参数。如果传递了一个负值,则默认使用0。
  • substring()还会自动调整参数的位置,如果第二个参数小于第一个,则自动交换。比如说, substring(1, 0)截取的是第一个字符。

substr【不推荐】

ECMAscript 没有对 substr() 方法进行标准化,因此不建议使用它。

字符串 = str.substr(开始索引, 截取的长度);

  • (2,4):从索引值为2的字符开始,截取4个字符。
  • (1):从指定位置开始,截取到最后。
  • (-3):从倒数第几个开始,剪到最后.
  • 不包括前大后小的情况。

字符串拆分为数组 split

    var str = "qian, gu, yi, hao"; // 用逗号隔开的字符串
    var array = str.split(","); // 将字符串 str 拆分成数组,通过逗号来拆分
    console.log(array); // 打印结果是数组:["qian", " gu", " yi", " hao"]
 
    //split()方法:字符串变数组
    var str3 = "大地|许嵩|smyhvae";
 
    console.log(str3.split());   // 无参数,表示:把字符串作为一个元素添加到数组中。
    console.log(str3.split(""));  //参数为空字符串,则表示:分隔字符串中每一个字符,分别添加到数组中
    console.log(str3.split("|")); //参数为指定字符,表示:此字符将不会出现在数组的任意一个元素中

拆分字符串中的词为数组【需lodash】

_.words('fred, barney, & pebbles');
// => ['fred', 'barney', 'pebbles']
 
_.words('fred, barney, & pebbles', /[^, ]+/g);
// => ['fred', 'barney', '&', 'pebbles']

字符串替换 replace()

将字符串中的指定内容,替换为新的内容并返回。不会修改原字符串。

新的字符串 = str.replace(被替换的内容,新的内容);

    //replace()方法:替换
    var str2 = "Today is fine day,today is fine day !!!"
    console.log(str2);
    console.log(str2.replace("today","tomorrow"));  //只能替换第一个today
    console.log(str2.replace(/today/gi,"tomorrow")); //这里用到了正则,才能替换所有的today

去除字符串前后的空白 trim()

    //去除前后的空格,trim();
    var str1 = "   a   b   c   ";
    console.log(str1.trim());

去除字符串头部的空白【使用lodash】

_.trimStart('  abc  ');
// => 'abc  '
 
_.trimStart('-_-abc-_-', '_-');
// => 'abc-_-'

去除字符串尾部的空白【使用lodash】

_.trimEnd('  abc  ');
// => '  abc'
 
_.trimEnd('-_-abc-_-', '_-');
// => '-_-abc'

是否包含指定字符串 includes()

str.includes('a')

是否以指定字符串开头 startsWith ()

str.startsWith('d')

是否以指定字符串结尾 endsWith ()

str.endsWith('g')

字符串转为html

    var str = "你好";
 
    console.log(str.anchor())
    console.log(str.big())
    console.log(str.sub())
    console.log(str.sup())
    console.log(str.link("http://www.baidu.com"));
    console.log(str.bold())
<a name="undefined">你好</a>
<big>你好</big>
<sub>你好</sub>
<sup>你好</sup>
<a href="http://www.baidu.com">你好</a>

字符串填充

时间自动补0

var dt = new Date(dateStr)
var hh = dt.getHours().toString().padStart(2, '0')


使用lodash

https://www.lodashjs.com/docs/lodash.pad

_.pad('abc', 8);
// => '  abc   '
 
_.pad('abc', 8, '_-');
// => '_-abc_-_'
 
_.pad('abc', 3);
// => 'abc'

驼峰写法【需lodash】

_.camelCase('Foo Bar');
// => 'fooBar'
 
_.camelCase('--foo-bar--');
// => 'fooBar'
 
_.camelCase('__FOO_BAR__');
// => 'fooBar'

首字母大写【需lodash】

_.capitalize('FRED');
// => 'Fred'

全部大写

str.toUpperCase()

全部小写

str.toLowerCase()

以空格分开单词,并转换为小写【需lodash】

_.lowerCase('--Foo-Bar--');
// => 'foo bar'
 
_.lowerCase('fooBar');
// => 'foo bar'
 
_.lowerCase('__FOO_BAR__');
// => 'foo bar'

以空格分开单词,并转换为大写【需lodash】

_.upperCase('--foo-bar');
// => 'FOO BAR'
 
_.upperCase('fooBar');
// => 'FOO BAR'
 
_.upperCase('__foo_bar__');
// => 'FOO BAR'

目录
相关文章
|
1月前
|
JavaScript 前端开发
JavaWeb JavaScript ③ JS的流程控制和函数
通过本文的详细介绍,您可以深入理解JavaScript的流程控制和函数的使用,进而编写出高效、可维护的代码。
73 32
|
2月前
|
中间件 API
Next.js 实战 (八):使用 Lodash 打包构建产生的“坑”?
这篇文章介绍了作者在使用Nextjs15进行项目开发时遇到的部署问题。在部署过程中,作者遇到了打包构建时的一系列报错,报错内容涉及动态代码评估在Edge运行时不被允许等问题。经过一天的尝试和调整,作者最终删除了lodash-es库,并将radash的部分源码复制到本地,解决了打包报错的问题。文章最后提供了项目的线上预览地址,并欢迎读者留言讨论更好的解决方案。
57 10
|
4月前
|
JavaScript 前端开发 数据处理
模板字符串和普通字符串在浏览器和 Node.js 中的性能表现是否一致?
综上所述,模板字符串和普通字符串在浏览器和 Node.js 中的性能表现既有相似之处,也有不同之处。在实际应用中,需要根据具体的场景和性能需求来选择使用哪种字符串处理方式,以达到最佳的性能和开发效率。
130 63
|
2月前
|
JavaScript 前端开发 开发者
JavaScript字符串的常用方法
在JavaScript中,字符串处理是一个非常常见的任务。JavaScript提供了丰富的字符串操作方法,使开发者能够高效地处理和操作字符串。本文将详细介绍JavaScript字符串的常用方法,并提供示例代码以便更好地理解和应用这些方法。
64 13
|
3月前
|
JavaScript 前端开发
【JavaScript】——JS基础入门常见操作(大量举例)
JS引入方式,JS基础语法,JS增删查改,JS函数,JS对象
|
4月前
|
JavaScript 前端开发 Java
springboot解决js前端跨域问题,javascript跨域问题解决
本文介绍了如何在Spring Boot项目中编写Filter过滤器以处理跨域问题,并通过一个示例展示了使用JavaScript进行跨域请求的方法。首先,在Spring Boot应用中添加一个实现了`Filter`接口的类,设置响应头允许所有来源的跨域请求。接着,通过一个简单的HTML页面和jQuery发送AJAX请求到指定URL,验证跨域请求是否成功。文中还提供了请求成功的响应数据样例及请求效果截图。
springboot解决js前端跨域问题,javascript跨域问题解决
|
4月前
|
JavaScript 前端开发
Moment.js与其他处理时间戳格式差异的JavaScript库相比有什么优势?
Moment.js与其他处理时间戳格式差异的JavaScript库相比有什么优势?
|
4月前
|
JSON JavaScript 前端开发
使用JavaScript和Node.js构建简单的RESTful API
使用JavaScript和Node.js构建简单的RESTful API
|
4月前
|
JavaScript 前端开发 索引
JavaScript学习第二章--字符串
本文介绍了JavaScript中的字符串处理,包括普通字符串和模板字符串的使用方法及常见字符串操作方法如`charAt`、`concat`、`endsWith`等,适合前端学习者参考。作者是一位热爱前端技术的大一学生,专注于分享实用的编程技巧。
50 2
|
5月前
|
Web App开发 JavaScript 前端开发
Node.js:JavaScript世界的全能工具
Node.js:JavaScript世界的全能工具

热门文章

最新文章