add stringx.FirstN with ellipsis (#916)

master
Kevin Wan 3 years ago committed by GitHub
parent e77747cff8
commit c7f5aad83a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -41,12 +41,16 @@ func Filter(s string, filter func(r rune) bool) string {
}
// FirstN returns first n runes from s.
func FirstN(s string, n int) string {
func FirstN(s string, n int, ellipsis ...string) string {
var i int
for j := range s {
if i == n {
return s[:j]
ret := s[:j]
for _, each := range ellipsis {
ret += each
}
return ret
}
i++
}

@ -94,10 +94,11 @@ func TestFilter(t *testing.T) {
func TestFirstN(t *testing.T) {
tests := []struct {
name string
input string
n int
expect string
name string
input string
n int
ellipsis string
expect string
}{
{
name: "english string",
@ -105,6 +106,13 @@ func TestFirstN(t *testing.T) {
n: 8,
expect: "anything",
},
{
name: "english string with ellipsis",
input: "anything that we use",
n: 8,
ellipsis: "...",
expect: "anything...",
},
{
name: "english string more",
input: "anything that we use",
@ -117,6 +125,13 @@ func TestFirstN(t *testing.T) {
n: 2,
expect: "我是",
},
{
name: "chinese string with ellipsis",
input: "我是中国人",
n: 2,
ellipsis: "...",
expect: "我是...",
},
{
name: "chinese string",
input: "我是中国人",
@ -127,7 +142,7 @@ func TestFirstN(t *testing.T) {
for _, test := range tests {
t.Run(test.name, func(t *testing.T) {
assert.Equal(t, test.expect, FirstN(test.input, test.n))
assert.Equal(t, test.expect, FirstN(test.input, test.n, test.ellipsis))
})
}
}

Loading…
Cancel
Save