Skip to content

Commit 0ba0b1a

Browse files
committed
Add functions to Upper/Lower case the first letter of a string
1 parent 52e9433 commit 0ba0b1a

File tree

3 files changed

+55
-4
lines changed

3 files changed

+55
-4
lines changed

README.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -133,6 +133,7 @@ go get github.com/tiendc/gofn
133133
- [StringJoin / StringJoinEx / StringJoinBy](#stringjoin--stringjoinex--stringjoinby)
134134
- [StringLexJoin / StringLexJoinEx](#stringlexjoin--stringlexjoinex)
135135
- [StringWrap / StringUnwrap](#stringwrap--stringunwrap)
136+
- [StringToUpper1stLetter / StringToLower1stLetter](#stringtoupper1stletter--stringtolower1stletter)
136137

137138
**Number**
138139
- [ParseInt / ParseUint / ParseFloat](#parseint--parseuint--parsefloat)
@@ -1101,6 +1102,15 @@ StringUnwrap("*abc*", "*") // "abc"
11011102
StringUnwrapLR("[abc]", "[", "]") // "abc"
11021103
```
11031104

1105+
#### StringToUpper1stLetter / StringToLower1stLetter
1106+
1107+
Capitalizes the first letter of a string.
1108+
1109+
```go
1110+
StringToUpper1stLetter("abc") // "Abc"
1111+
StringToLower1stLetter("Abc") // "abc"
1112+
```
1113+
11041114
### Number
11051115
---
11061116

string.go

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
"fmt"
55
"math/rand"
66
"strings"
7+
"unicode"
78
"unicode/utf8"
89
)
910

@@ -201,3 +202,23 @@ func StringWrapLR(s string, tokenLeft, tokenRight string) string {
201202
func StringUnwrapLR(s string, tokenLeft, tokenRight string) string {
202203
return strings.TrimSuffix(strings.TrimPrefix(s, tokenLeft), tokenRight)
203204
}
205+
206+
// StringToUpper1stLetter uppercases the first letter of the input string
207+
func StringToUpper1stLetter(s string) string {
208+
if len(s) == 0 {
209+
return s
210+
}
211+
runes := []rune(s)
212+
runes[0] = unicode.ToUpper(runes[0])
213+
return string(runes)
214+
}
215+
216+
// StringToLower1stLetter lowercases the first letter of the input string
217+
func StringToLower1stLetter(s string) string {
218+
if len(s) == 0 {
219+
return s
220+
}
221+
runes := []rune(s)
222+
runes[0] = unicode.ToLower(runes[0])
223+
return string(runes)
224+
}

string_test.go

Lines changed: 24 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -101,12 +101,14 @@ func Test_LinesTrimLeft(t *testing.T) {
101101
â line-1
102102
line-2 â`))
103103
// Extra func test
104+
// ascii cutset
104105
assert.Equal(t, "\nê b â line-1\nê line-2 â ê ", LinesTrimLeft(`
105106
a ê b â line-1
106-
b aê line-2 â ê `, "a b\t")) // ascii cutset
107+
b aê line-2 â ê `, "a b\t"))
108+
// unicode cutset
107109
assert.Equal(t, "\nâ line-1\nline-2 â ê", LinesTrimLeft(`
108110
ê â line-1
109-
ê line-2 â ê`, "a b\tê")) // unicode cutset
111+
ê line-2 â ê`, "a b\tê"))
110112
}
111113

112114
func Test_LinesTrimRight(t *testing.T) {
@@ -129,12 +131,14 @@ line-2`))
129131
â line-1 â
130132
line-2`))
131133
// Extra func test
134+
// ascii cutset
132135
assert.Equal(t, "\nâ line-1 â ê\nline-2 ê", LinesTrimRight(`
133136
â line-1 â ê
134-
line-2 ê `, "a b\t")) // ascii cutset
137+
line-2 ê `, "a b\t"))
138+
// unicode cutset
135139
assert.Equal(t, "\n â line-1 â\nline-2", LinesTrimRight(`
136140
â line-1 â ê
137-
line-2 ê `, "a b\tê")) // unicode cutset
141+
line-2 ê `, "a b\tê"))
138142
}
139143

140144
func Test_LinesTrim(t *testing.T) {
@@ -183,3 +187,19 @@ func Test_StringUnwrap(t *testing.T) {
183187
assert.Equal(t, "abc", StringUnwrapLR("[abc]", "[", "]"))
184188
assert.Equal(t, " [abc", StringUnwrapLR(" [abc]", "[", "]"))
185189
}
190+
191+
func Test_StringToUpper1stLetter(t *testing.T) {
192+
assert.Equal(t, "", StringToUpper1stLetter(""))
193+
assert.Equal(t, " abc", StringToUpper1stLetter(" abc"))
194+
assert.Equal(t, "Abc", StringToUpper1stLetter("Abc"))
195+
assert.Equal(t, "Abc", StringToUpper1stLetter("abc"))
196+
assert.Equal(t, "Ối", StringToUpper1stLetter("ối"))
197+
}
198+
199+
func Test_StringToLower1stLetter(t *testing.T) {
200+
assert.Equal(t, "", StringToLower1stLetter(""))
201+
assert.Equal(t, " abc", StringToLower1stLetter(" abc"))
202+
assert.Equal(t, "abc", StringToLower1stLetter("abc"))
203+
assert.Equal(t, "abc", StringToLower1stLetter("Abc"))
204+
assert.Equal(t, "ối", StringToLower1stLetter("Ối"))
205+
}

0 commit comments

Comments
 (0)