JSFiddle - React, Tailwind, and code Playground
by Emre Erkan
HTML
<div id="results"></div>
CSS
textarea { display: block; width: 350px; height: 80px; }
JavaScript
var StringBuilder =
function(v) {
this.s = [];
this.append(v);
};
StringBuilder.prototype.append =
function (v) {
if(v)
this.s.push(v);
};
StringBuilder.prototype.appendLine =
function (v) {
if(v)
this.s.push(v);
this.s.push("\r\n");
};
StringBuilder.prototype.appendFormat =
function() {
var p = /({?){([^}]+)}(}?)/g;
var a = arguments, v = a[0], o=false;
if (a.length == 2) {
if (typeof a[1] == 'object' && a[1].constructor != String) {
a = a[1];
o = true;
}
}
var s = v.split(p);
var r = [];
for (var i = 0; i < s.length; i += 4) {
r.push(s[i]);
if (s.length > i + 3) {
if (s[i + 1] == '{' && s[i + 3] == '}')
r.push(s[i + 1], s[i + 2], s[i + 3]);
else
r.push(s[i + 1], a[o ? s[i + 2] : parseInt(s[i + 2],10)+1], s[i + 3]);
}
}
this.s.push(r.join(''));
};
StringBuilder.prototype.clear =
function() {
this.s.length = 0;
};
StringBuilder.prototype.toString =
function() {
return this.s.length == 0 ? "" : this.s.join("");
};
var sb = new StringBuilder();
sb.append("Klasik");
$('#results').append('<textarea cols="30" rows="3">' + sb.toString() + '</textarea>');
sb = new StringBuilder('Constructor\' da metin kullanımı');
sb.append(' örneği');
sb.appendLine();
sb.appendLine('Yeni satır da çalışıyor');
sb.append('Bu örnekte olduğu gibi!');
$('#results').append('<textarea cols="30" rows="3">' + sb.toString() + '</textarea>');
sb.clear();
sb.appendLine('clear ile temizlenmiş StringBuilder kullanımı');
sb.appendFormat('String Format: Bu örnekte {0} farklı {1} kullandım', 2, 'parametre');
$('#results').append('<textarea cols="30" rows="3">' + sb.toString() + '</textarea>');
sb.clear();
sb.appendFormat('JSON olarak da veri yazılabilir. Sepette {elma} elma ve {armut} armut var.', { elma: 2, armut: 4});
$('#results').append('<textarea cols="30" rows="3">' + sb.toString() + '</textarea>');