我看到了一些代码项目解决方案。
但是JavaScript中有常规的实现吗?
我看到了一些代码项目解决方案。
但是JavaScript中有常规的实现吗?
当前回答
StringBuilder JavaScript尝试这个..
function StringBuilder(value) { this.strings = new Array(); this.append(value); } StringBuilder.prototype.append = function (value) { if (value) { this.strings.push(value); } } StringBuilder.prototype.clear = function () { this.strings.length = 0; } StringBuilder.prototype.toString = function () { return this.strings.join(""); } var sb = new StringBuilder(); sb.append("This is"); sb.append("much better looking"); sb.append("than using +="); var myString = sb.toString(); sb.clear();
其他回答
下面是Typescript中StringBuilder类的一个快速示例:
export class StringBuilder {
private _lines: string[] = [];
write(line: string = ""): void {
this._lines.push(line);
}
writeln(line: string = ""): void {
this._lines.push(line);
this._lines.push("\n");
}
toString(): string {
return this._lines.join("");
}
}
你可以像下面这样使用:
const sb = new StringBuilder();
sb.write("Hello World");
sb.writeln("!");
console.log(sb.toString());
我刚刚在http://jsperf.com/javascript-concat-vs-join/2上重新检查了性能。 测试用例连接或连接字母表1000次。
在当前的浏览器(FF, Opera, IE11, Chrome)中,“concat”比“join”快4-10倍。
在IE8中,两者返回的结果大致相同。
不幸的是,在IE7中,“join”要快100倍。
EDIT
不,没有内置类。但是,字符串字面值可能是一种合适的变通方法。
原来的答案
JavaScript的ECMAScript 6版本(又名ECMAScript 2015)引入了字符串字面量。
var classType = "stringbuilder";
var q = `Does JavaScript have a built-in ${classType} class?`;
注意,将字符串括起来的是反勾号,而不是单引号。
在c#中,你可以这样做
String.Format("hello {0}, your age is {1}.", "John", 29)
在JavaScript中,你可以这样做
var x = "hello {0}, your age is {1}";
x = x.replace(/\{0\}/g, "John");
x = x.replace(/\{1\}/g, 29);
sys.StringBuilder()试试下面的文章。
https://msdn.microsoft.com/en-us/library/bb310852.aspx