25 lines
609 B
Go
25 lines
609 B
Go
package rulesfn
|
|
|
|
// Substring returns the substring of the input provided. If the start or stop
|
|
// indexes are not valid for the input nil will be returned. If errors occur
|
|
// they will be added to the provided [ErrorCollector].
|
|
func SubString(input string, start, stop int, reverse bool) *string {
|
|
if start < 0 || stop < 1 || start >= stop || len(input) < stop {
|
|
return nil
|
|
}
|
|
|
|
for _, r := range input {
|
|
if r > 127 {
|
|
return nil
|
|
}
|
|
}
|
|
|
|
if !reverse {
|
|
v := input[start:stop]
|
|
return &v
|
|
}
|
|
|
|
rStart := len(input) - stop
|
|
rStop := len(input) - start
|
|
return SubString(input, rStart, rStop, false)
|
|
}
|