用javaScript实现跟C#中类似的StringBuilder的功能

简介: 用javaScript实现跟C#中类似的StringBuilder的功能

StringBuilder类

///<summary>
///声明一个相当于C#类StringBuilder
///</summary>
function StringBuilder()
{
    this._string=new Array();
}
///<summary>
///声明一个方法,连接字符串
///</summary>
///<param name=str>要连接的字符串</param>
StringBuilder.prototype.append=function(str)
{
 this._string.push(str);
}
///<summary>
///声明一个方法,获得字符串
///</summary>
StringBuilder.prototype.toString=function()
{
 return this._string.join("");
}
//获取字符数组
StringBuilder.prototype.ToCharArray=function()
{
return this.split("");
}
//获取N个相同的字符串
StringBuilder.prototype.Repeat=function(num)
{
var tmpArr=[];
for(var i=0;i<num;i++) tmpArr.push(this);
return tmpArr.join("");
}
//逆序
StringBuilder.prototype.Reverse=function()
{
return this.split("").reverse().join("");
}
//测试是否是数字
StringBuilder.prototype.IsNumeric=function()
{
var tmpFloat=parseFloat(this);
if(isNaN(tmpFloat)) return false;
var tmpLen=this.length-tmpFloat.toString().length;
return tmpFloat+"0".Repeat(tmpLen)==this;
}
//测试是否是整数
StringBuilder.prototype.IsInt=function()
{
if(this=="NaN") return false;
return this==parseInt(this).toStringBuilder();
}
// 合并多个空白为一个空白
StringBuilder.prototype.resetBlank = function()
{
return this.replace(/s+/g," ");
}
// 除去左边空白
StringBuilder.prototype.LTrim = function()
{
return this.replace(/^s+/g,"");
}
// 除去右边空白
StringBuilder.prototype.RTrim = function()
{
return this.replace(/s+$/g,"");
}
// 除去两边空白
StringBuilder.prototype.trim = function()
{
return this.replace(/(^s+)|(s+$)/g,"");
}
// 保留数字
StringBuilder.prototype.getNum = function()
{
return this.replace(/[^d]/g,"");
}
// 保留字母
StringBuilder.prototype.getEn = function()
{
return this.replace(/[^A-Za-z]/g,"");
}
// 保留中文
StringBuilder.prototype.getCn = function()
{
return this.replace(/[^u4e00-u9fa5uf900-ufa2d]/g,"");
}
// 得到字节长度
StringBuilder.prototype.getRealLength = function()
{
return this.replace(/[^x00-xff]/g,"--").length;
}
// 从左截取指定长度的字串
StringBuilder.prototype.left = function(n)
{
return this.slice(0,n);
}
// 从右截取指定长度的字串
StringBuilder.prototype.right = function(n)
{
return this.slice(this.length-n);
}
// HTML编码
StringBuilder.prototype.HTMLEncode = function()
{
var re = this;
var q1 = [/x26/g,/x3C/g,/x3E/g,/x20/g];
var q2 = ["&","<",">"," "];
for(var i=0;i<q1.length;i++)
re = re.replace(q1[i],q2[i]);
return re;
}
// Unicode转化
StringBuilder.prototype.ascW = function()
{
var strText = "";
for (var i=0; i<this.length; i++) strText += "&#" + this.charCodeAt(i) + ";";
return strText;
}

接着我们就可以使用了,使用方法"

var strBuilder=new StringBuilder()
strBuilder.app("abc")
strBuilder.app("abc")
strBuilder.toString()


相关文章
|
25天前
|
JavaScript 前端开发 安全
盘点原生JS中目前最没用的几个功能API
在JavaScript的发展历程中,许多功能与API曾风光无限,但随着技术进步和语言演化,部分功能逐渐被淘汰或被更高效的替代方案取代。例如,`with`语句使代码作用域复杂、可读性差;`void`操作符功能冗余且影响可读性;`eval`函数存在严重安全风险和性能问题;`unescape`和`escape`函数已被`decodeURIComponent`和`encodeURIComponent`取代;`arguments`对象则被ES6的剩余参数语法替代。这些变化体现了JavaScript不断优化的趋势,开发者应紧跟技术步伐,学习新技能,适应新技术环境。
43 10
|
1月前
|
JavaScript 前端开发
【Vue.js】监听器功能(EventListener)的实际应用【合集】
而此次问题的核心就在于,Vue实例化的时机过早,在其所依赖的DOM结构尚未完整构建完成时就已启动挂载流程,从而导致无法找到对应的DOM元素,最终致使计算器功能出现异常,输出框错误地显示“{{current}}”,并且按钮的交互功能也完全丧失响应。为了让代码结构更为清晰,便于后续的维护与管理工作,我打算把HTML文件中标签内的JavaScript代码迁移到外部的JS文件里,随后在HTML文件中对其进行引用。
52 8
|
2月前
|
JavaScript 容器
带方向感知功能的js图片遮罩层插件
带方向感知功能的js图片遮罩层插件
|
3月前
|
JavaScript 前端开发 容器
jQuery多功能滑块插件r-slider.js
r-slider.js是一款jQuery多功能滑块插件。使用该插件,可以制作出滑块、开关按钮、进度条、向导步骤等多种效果。
65 5
|
3月前
|
开发框架 C# iOS开发
基于C#开源、功能强大、灵活的跨平台开发框架 - Uno Platform
基于C#开源、功能强大、灵活的跨平台开发框架 - Uno Platform
|
3月前
|
JavaScript
js实现简洁实用的网页计算器功能源码
这是一款使用js实现简洁实用的网页计算器功能源码。可实现比较基本的加减乘除四则运算功能,界面简洁实用,是一款比较基本的js运算功能源码。该源码可兼容目前最新的各类主流浏览器。
54 2
|
3月前
|
传感器 IDE 测试技术
C#一分钟浅谈:Visual Studio IDE 高级功能
【10月更文挑战第24天】本文从初学者角度介绍了 Visual Studio 的高级功能,包括安装与配置、创建项目、运行与调试、常见问题及解决方案(如代码格式化、重构、导航、单元测试、代码分析),以及智能感知、Live Unit Testing、代码生成和代码片段等高级功能,帮助开发者提高效率和代码质量。
74 1
|
4月前
|
人工智能 JavaScript 网络安全
ToB项目身份认证AD集成(三完):利用ldap.js实现与windows AD对接实现用户搜索、认证、密码修改等功能 - 以及针对中文转义问题的补丁方法
本文详细介绍了如何使用 `ldapjs` 库在 Node.js 中实现与 Windows AD 的交互,包括用户搜索、身份验证、密码修改和重置等功能。通过创建 `LdapService` 类,提供了与 AD 服务器通信的完整解决方案,同时解决了中文字段在 LDAP 操作中被转义的问题。
110 1
|
3月前
|
网络协议 Unix Linux
精选2款C#/.NET开源且功能强大的网络通信框架
精选2款C#/.NET开源且功能强大的网络通信框架
109 0
|
4月前
|
开发框架 Cloud Native .NET
10 个 C# 关键字和功能
10 个 C# 关键字和功能
78 8