forked from buguang01/comp
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathStringBuilder.go
107 lines (89 loc) · 2.34 KB
/
StringBuilder.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
package comp
import (
"bytes"
)
/*
StringBuilder struct.
Usage:
builder := NewStringBuilder()
builder.Append("a").Append("b").Append("c")
s := builder.String()
println(s)
print:
abc
啊啊啊
*/
// StringBuilder
type StringBuilder struct {
buffer bytes.Buffer
}
//NewStringBuilderCap 带容器长度的创建
func NewStringBuilderCap(capnum int) *StringBuilder {
builder := StringBuilder{
buffer: *bytes.NewBuffer(make([]byte, 0, capnum)),
}
return &builder
}
func NewStringBuilder() *StringBuilder {
var builder StringBuilder
return &builder
}
func NewStringBuilderString(str *String) *StringBuilder {
var builder StringBuilder
builder.buffer.WriteString(str.ToString())
return &builder
}
func (builder *StringBuilder) Appendln(s string) *StringBuilder {
builder.buffer.WriteString(s + "\n")
return builder
}
func (builder *StringBuilder) Append(s string) *StringBuilder {
builder.buffer.WriteString(s)
return builder
}
func (builder *StringBuilder) AppendRune(s rune) *StringBuilder {
builder.buffer.WriteRune(s)
return builder
}
func (builder *StringBuilder) AppendStrings(ss ...string) *StringBuilder {
for i := range ss {
builder.buffer.WriteString(ss[i])
}
return builder
}
func (builder *StringBuilder) AppendInt(i int) *StringBuilder {
builder.buffer.WriteString(NewStringInt(i).ToString())
return builder
}
func (builder *StringBuilder) AppendInt64(i int64) *StringBuilder {
builder.buffer.WriteString(NewStringInt64(i).ToString())
return builder
}
func (builder *StringBuilder) AppendFloat64(f float64) *StringBuilder {
builder.buffer.WriteString(NewStringFloat64(f).ToString())
return builder
}
func (builder *StringBuilder) Replace(old, new string) *StringBuilder {
str := NewString(builder.ToString()).Replace(old, new)
builder.Clear()
builder.buffer.WriteString(str.ToString())
return builder
}
func (builder *StringBuilder) RemoveLast() *StringBuilder {
str1 := NewString(builder.ToString())
builder.Clear()
str2 := str1.Substring(0, str1.Len()-1)
builder.buffer.WriteString(str2.ToString())
return builder
}
func (builder *StringBuilder) Clear() *StringBuilder {
builder.buffer.Reset()
return builder
}
func (builder *StringBuilder) ToString() string {
return builder.buffer.String()
}
//IsEmpty 是否为空字符串
func (builder *StringBuilder) IsEmpty() bool {
return builder.buffer.Len() == 0
}