职业IT人-IT人生活圈

 找回密码
 成为会员
搜索
查看: 542|回复: 9

一个JavaScript写的StringBuffer工具

[复制链接]
broken 发表于 2011-8-10 09:58 | 显示全部楼层 |阅读模式
Java代码  
/*******************************************************  
* JavaScript的StringBuffer工具  
* Date:2011/4/20  
*******************************************************/  
  
function StringBuffer() {   
    this.str = "";   
    this.objArray = new Array();   
    this.append = function (s) {   
        if (this.length() == 0) {   
            this.objArray[0] = s;   
        } else {   
            this.objArray[this.length() + 1] = s;   
        }   
    };   
    this.toString = function () {   
        if (this.length() == 0) {   
            return "";   
        } else {   
            return this.objArray.join("");   
        }   
    };   
    this.chatAt = function (s) {   
        if (this.toString() != "") {   
            return this.toString().indexOf(s);   
        }   
    };   
    this.clear = function () {   
        if (this.length() != 0) {   
            this.objArray.length = 0;   
        }   
    };   
    this.length = function () {   
        return this.objArray.length;   
    };   
    this.substring = function (start, end) {   
        if (start > 0 || start == 0) {   
            if (end <= this.length() && (end > start)) {   
                return this.toString().substring(start, end);   
            } else {   
                alert("JavaScriptException:IndexOutOfBounds");   
                return null;   
            }   
        } else {   
            alert("JavaScriptException:IndexOutOfBounds");   
            return null;   
        }   
    };   
    this.toArray = function () {   
        var tempArray = this.objArray.join(",");   
        return tempArray.split(",");   
    };   
    this.setcharAt = function (charIndex, str) {   
        if (charIndex < 0 || charIndex > this.length()) {   
            alert("JavaScriptException:IndexOutOfBounds");   
            return null;   
        } else {   
            this.objArray[charIndex] = str;   
        }   
        return this.toString();   
    };   
    this.replace = function (oldchar, newchar) {   
        var foundChar = this.toString().indexOf(oldchar);   
        if (foundChar < 0) {   
            alert("JavaScriptException:not found oldchar");   
            return null;   
        } else {   
            return this.toString().replace(oldchar, newchar);   
        }   
    };   
}  

/*******************************************************
* JavaScript的StringBuffer工具
* Date:2011/4/20
*******************************************************/

function StringBuffer() {
        this.str = "";
        this.objArray = new Array();
        this.append = function (s) {
                if (this.length() == 0) {
                        this.objArray[0] = s;
                } else {
                        this.objArray[this.length() + 1] = s;
                }
        };
        this.toString = function () {
                if (this.length() == 0) {
                        return "";
                } else {
                        return this.objArray.join("");
                }
        };
        this.chatAt = function (s) {
                if (this.toString() != "") {
                        return this.toString().indexOf(s);
                }
        };
        this.clear = function () {
                if (this.length() != 0) {
                        this.objArray.length = 0;
                }
        };
        this.length = function () {
                return this.objArray.length;
        };
        this.substring = function (start, end) {
                if (start > 0 || start == 0) {
                        if (end <= this.length() && (end > start)) {
                                return this.toString().substring(start, end);
                        } else {
                                alert("JavaScriptException:IndexOutOfBounds");
                                return null;
                        }
                } else {
                        alert("JavaScriptException:IndexOutOfBounds");
                        return null;
                }
        };
        this.toArray = function () {
                var tempArray = this.objArray.join(",");
                return tempArray.split(",");
        };
        this.setcharAt = function (charIndex, str) {
                if (charIndex < 0 || charIndex > this.length()) {
                        alert("JavaScriptException:IndexOutOfBounds");
                        return null;
                } else {
                        this.objArray[charIndex] = str;
                }
                return this.toString();
        };
        this.replace = function (oldchar, newchar) {
                var foundChar = this.toString().indexOf(oldchar);
                if (foundChar < 0) {
                        alert("JavaScriptException:not found oldchar");
                        return null;
                } else {
                        return this.toString().replace(oldchar, newchar);
                }
        };
}


只学java 发表于 2011-8-10 09:58 | 显示全部楼层
StringBuffer.prototype.replace = function (oldchar, newchar) {  
        var foundChar = this.toString().indexOf(oldchar);  
        if (foundChar < 0) {  
            alert("JavaScriptException:not found oldchar");  
            return null;  
        } else {  
            return this.toString().replace(oldchar, newchar);  
        }  
    };
会好些?

紫衿 发表于 2011-8-10 09:59 | 显示全部楼层
感觉。。。用处不大

平常使用JS,拼装字符串都是这样的套路:

var arr = [];
arr.push(str1);
arr.push(str2);
...

var str = arr.join("");

使用上和java的StringBuffer差不了多少

能文能武 发表于 2011-8-10 09:59 | 显示全部楼层
clue 写道
感觉。。。用处不大

平常使用JS,拼装字符串都是这样的套路:

var arr = [];
arr.push(str1);
arr.push(str2);
...

var str = arr.join("");

使用上和java的StringBuffer差不了多少

+1

的确如此...

jinchang 发表于 2011-8-10 09:59 | 显示全部楼层
那本<javascript高级设计>里面好像有个例子的.

曾经的小孩 发表于 2011-8-10 09:59 | 显示全部楼层
java的编程思想。

jinchang 发表于 2011-8-10 09:59 | 显示全部楼层
有没有测试下效率,现在的浏览器对 字符串 + 操作一般都做了专门的优化处理的;
你测测 试试

jinchang 发表于 2011-8-10 09:59 | 显示全部楼层
这个确实用处不是很大

 楼主| broken 发表于 2011-8-10 09:59 | 显示全部楼层
clue 写道
感觉。。。用处不大

平常使用JS,拼装字符串都是这样的套路:

var arr = [];
arr.push(str1);
arr.push(str2);
...

var str = arr.join("");

使用上和java的StringBuffer差不了多少

一直这么用,都习惯了

钰云 发表于 2011-8-10 10:00 | 显示全部楼层
//StringBuffer类定义
function StringBuffer() {
this._strings = new Array;
}
StringBuffer.prototype.append = function (str) {
this._strings.push(str);
};
StringBuffer.prototype.toString = function () {
//StringBuffer类定义
function StringBuffer() {
this._strings = new Array;
}
StringBuffer.prototype.append = function (str) {
this._strings.push(str);
};
StringBuffer.prototype.toString = function () {
return this._strings.join(“”);
};

//test
var buffer = new StringBuffer();
buffer.append(“hello “);
buffer.append(“world”);
var result = buffer.toString();
使用StringBuffer拼接字符串比用String效率高。

考虑下面一段代码的运行。

var str = “hello “;
str += “world”;
This code actually executes the following steps behind the scenes:
1. Create a string to store “hello “.
2. Create a string to store “world”.
3. Create a string to store the result of concatenation.
4. Copy the current contents of str into the result.
5. Copy the “world” into the result.
6. Update str to point to the result.
文章来源 http://www.waibaosh.com/
您需要登录后才可以回帖 登录 | 成为会员

本版积分规则

QQ|手机版|小黑屋|网站帮助|职业IT人-IT人生活圈 ( 粤ICP备12053935号-1 )|网站地图
本站文章版权归原发布者及原出处所有。内容为作者个人观点,并不代表本站赞同其观点和对其真实性负责,本站只提供参考并不构成任何投资及应用建议。本站是信息平台,网站上部分文章为转载,并不用于任何商业目的,我们已经尽可能的对作者和来源进行了通告,但是能力有限或疏忽造成漏登,请及时联系我们,我们将根据著作权人的要求立即更正或者删除有关内容。

GMT+8, 2024-4-27 10:22 , Processed in 0.122526 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表