Skip to content

Commit

Permalink
Adds reverse function
Browse files Browse the repository at this point in the history
  • Loading branch information
ecrmnn committed Dec 12, 2023
1 parent 26ddd60 commit edc9564
Show file tree
Hide file tree
Showing 4 changed files with 93 additions and 0 deletions.
24 changes: 24 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,7 @@ Visit https://str.danieleckermann.com for full documentation
- [Repeat](#repeat-str)
- [Remove](#remove-str)
- [Replace](#replace-str)
- [Reverse](#reverse-str)
- [Screaming](#screaming-str)
- [Slug](#slug-str)
- [Snake](#snake-str)
Expand Down Expand Up @@ -919,6 +920,29 @@ str.New("你好世界").Replace("你好", "").String()
```


### Reverse `*Str`

`Reverse` returns a new instance of Str with the current string reversed.

```go
str.New("i like c++").Reverse().String()
// "++c ekil i"

str.New("rocket 🚀 man").Reverse().String()
// "nam 🚀 tekcor"

str.New("go, go, go!").Reverse().String()
// "!og ,og ,og"

str.New("你好世界").Reverse().String()
// "界世好你"

str.New("你好世界").Reverse().String()
// "界世好你"

```


### Screaming `*Str`


Expand Down
29 changes: 29 additions & 0 deletions docs/api/reverse.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
# Reverse `*Str`

`Reverse` returns a new instance of Str with the current string reversed.

### Signature

```go
func (s *Str) Reverse() *Str
```

### Examples

```go
str.New("i like c++").Reverse().String()
// "++c ekil i"

str.New("rocket 🚀 man").Reverse().String()
// "nam 🚀 tekcor"

str.New("go, go, go!").Reverse().String()
// "!og ,og ,og"

str.New("你好世界").Reverse().String()
// "界世好你"

str.New("你好世界").Reverse().String()
// "界世好你"

```
15 changes: 15 additions & 0 deletions str.go
Original file line number Diff line number Diff line change
Expand Up @@ -342,6 +342,21 @@ func (s *Str) Replace(old string, new string) *Str {
return s
}

// Reverse returns a new instance of Str with the current string reversed.
func (s *Str) Reverse() *Str {
slice := strings.Split(s.getValue(), "")

length := len(slice)

for i := 0; i < length/2; i++ {
slice[i], slice[length-i-1] = slice[length-i-1], slice[i]
}

s.setValue(strings.Join(slice, ""))

return s
}

func (s *Str) Screaming() *Str {
v := s.getValue()

Expand Down
25 changes: 25 additions & 0 deletions str_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -959,6 +959,31 @@ var testCases = []testCase{
},
},
},
{
name: "Reverse",
fixtures: []fixture{
{
actual: str.New("i like c++").Reverse().String(),
expected: "++c ekil i",
},
{
actual: str.New("rocket 🚀 man").Reverse().String(),
expected: "nam 🚀 tekcor",
},
{
actual: str.New("go, go, go!").Reverse().String(),
expected: "!og ,og ,og",
},
{
actual: str.New("你好世界").Reverse().String(),
expected: "界世好你",
},
{
actual: str.New("你好世界").Reverse().String(),
expected: "界世好你",
},
},
},
{
name: "Screaming",
fixtures: []fixture{
Expand Down

0 comments on commit edc9564

Please sign in to comment.