JS格式化字符串的两种方法(反引号与String.prototype)

 更新时间:2023年06月19日 12:36:30   作者:COCO56(徐可可)  
本文一共介绍了两种实现方式,使用反引号或自定义方法实现,需要的朋友可以参考下

本文一共介绍了两种实现方式:

1. 使用反引号实现(推荐)

ES6 模板字符串(Template String)是增强版的字符串,用反引号(`)标识,它可以当作普通字符串使用,也可以用来定义多行字符串,或者在字符串中嵌入变量。

语法格式:

`想要输出的字符串……${变量名称}想要输出的字符串……${变量名称}`

应用实例:

 <script>
        window.onload = function() {
            var name = "徐可可";
            var age = 25;
            var sex = "男";
            console.log(`大家好,我叫${name},性别${sex},今年${age}岁了`);
        }
 </script>

2. 自定义方法实现

String.prototype 属性表示 String原型对象。所有 String 的实例都继承自 String.prototype. 任何String.prototype上的改变都会影响到所有的 String 实例。js扩展String.prototype.format字符串拼接的功能,首先是基础功能的改造:

String.prototype.format = function(){
  if(arguments.length==0){
    return this;
  }
  for(var s=this, i=0; i<arguments.length; i++){
    s = s.replace(new RegExp("\\{"+i+"\\}","g"), arguments[i]);
  }
  return s;
};

然后就是调用了:

//方式1
var test = '我的{0}是{1}';
var result = test.format('ID','coco56');
//方式2
var test = '我的{description}是{name}';
var result = test.format({description:'ID',name:'coco56'});

下面是其它网友的补充

格式化字符串

使用的replace不适合多个重复

<!-- lang: js -->
String.prototype.format = function(args) {
    var result = this;
    if (arguments.length < 1) {
        return result;
    }
    var data = arguments;		//如果模板参数是数组
    if (arguments.length == 1 && typeof (args) == "object") {
        //如果模板参数是对象
        data = args;
    }
    for (var key in data) {
        var value = data[key];
        if (undefined != value) {
            result = result.replace("{" + key + "}", value);
        }
}
    return result;
}

版本2 使用了replaceAll

<!-- lang: js -->
/**
 * 替换所有匹配exp的字符串为指定字符串
 * @param exp 被替换部分的正则
 * @param newStr 替换成的字符串
 */
String.prototype.replaceAll = function (exp, newStr) {
	return this.replace(new RegExp(exp, "gm"), newStr);
};
/**
 * 原型:字符串格式化
 * @param args 格式化参数值
 */
String.prototype.format = function(args) {
	var result = this;
	if (arguments.length < 1) {
		return result;
	}
	var data = arguments; // 如果模板参数是数组
	if (arguments.length == 1 && typeof (args) == "object") {
		// 如果模板参数是对象
		data = args;
	}
	for ( var key in data) {
		var value = data[key];
		if (undefined != value) {
			result = result.replaceAll("\\{" + key + "\\}", value);
		}
	}
	return result;
}

使用方法:

<!-- lang: js -->
//两种调用方式
var template1="我是{0},今年{1}了";
var result1=template1.format("loogn",22);
var template2="我是{name},今年{age}了";
var result2=template2.format({name:"loogn",age:22});
//两个结果都是"我是loogn,今年22了"

对于版本2使用了正则表达式(replaceaAll),意味着当文本中出现多个替换位时,都可以被替换。 var template1=“我是{0},今年{1}了, lucy今年也{1}了”; var

//结果是"我是loogn,今年22了, lucy今年也22了"

到此这篇关于JS格式化字符串的两种方法(反引号与String.prototype)的文章就介绍到这了,更多相关JS格式化字符串内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 自定义函数实现IE7与IE8不兼容js中trim函数的问题

    自定义函数实现IE7与IE8不兼容js中trim函数的问题

    这篇文章主要介绍了自定义函数实现IE7与IE8不兼容js中trim函数的方法,涉及trim函数的重写与正则匹配的技巧,需要的朋友可以参考下
    2015-02-02
  • 在JavaScript中实现链式调用的实现

    在JavaScript中实现链式调用的实现

    这篇文章主要介绍了在JavaScript中实现链式调用的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-12-12
  • Bootstrap 响应式实用工具实例详解

    Bootstrap 响应式实用工具实例详解

    Bootstrap 提供了一些辅助类,以便更快地实现对移动设备友好的开发。这些可以通过媒体查询结合大型、小型和中型设备,实现内容对设备的显示和隐藏。下面通过本文给大家分享Bootstrap 响应式实用工具,一起看看吧
    2017-03-03
  • JavaScript 编写匿名函数的几种方法

    JavaScript 编写匿名函数的几种方法

    匿名函数可以有效控制变量作用域,构造闭包 (Closure),防止对全局变量造成污染。在 JavaScript 中,编写匿名函数,有以下几种方法.
    2010-02-02
  • readonly和disabled的区别

    readonly和disabled的区别

    要慎用readonly和disabled, 指定了disabled的表单,在submit时,不会把它的值传出去, 如下所示,有两个text,一个是readonly一个是disabled,submit后,只能发送那个不是disabled的,注意地址栏的值. 要保存到本地,因为submit了,不然,看不到效果.
    2008-04-04
  • javascript parseInt与Number函数的区别

    javascript parseInt与Number函数的区别

    在js中,如果你使用parseInt("08"),一般都会认为会返回8,然而实际上返回了0.但是用Number("08")返回的才是8.
    2010-01-01
  • JS中一些高效的魔法运算符总结

    JS中一些高效的魔法运算符总结

    这篇文章主要给阿加介绍了关于JS中一些高效的魔法运算符,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-05-05
  • JavaScript中使用typeof运算符需要注意的几个坑

    JavaScript中使用typeof运算符需要注意的几个坑

    这篇文章主要介绍了JavaScript中使用typeof运算符需要注意的几个坑,本文总结了4个使用typeof运算符要注意的问题,需要的朋友可以参考下
    2014-11-11
  • JavaScript实现计算器的四则运算功能

    JavaScript实现计算器的四则运算功能

    这篇文章主要为大家介绍了如何通过JavaScript实现计算器的四则运算功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起动手试试
    2022-02-02
  • JS数组的遍历方式for循环与for...in

    JS数组的遍历方式for循环与for...in

    本节主要介绍了JS数组的遍历方式for循环与for...in,需要的朋友可以参考下
    2014-07-07

最新评论