From 78ceded6e90699a5da5297d2a6cf908ad9bf6c4c Mon Sep 17 00:00:00 2001 From: siddharth Date: Mon, 17 Jan 2022 18:20:29 -0500 Subject: lib: add StrToNum --- lib/str.go | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) (limited to 'lib/str.go') diff --git a/lib/str.go b/lib/str.go index 857268d..2f6ece4 100644 --- a/lib/str.go +++ b/lib/str.go @@ -153,3 +153,31 @@ func StrHas(s, n string) bool { } return false } + +// Converts a string to an integer. +func StrToNum(s string) (int, error) { + var negative bool + var n int + + if len(s) < 1 { + return 0, CPError{"invalid number"} + } + if s[0] == '-' { + negative = true + s = s[1:] + } + u := 1 + for i := len(s) - 1; i >= 0; i-- { + b := s[i] + if b >= '0' && b <= '9' { + n += int(b-48) * u + u *= 10 + } else { + return 0, CPError{"invalid number"} + } + } + if negative { + n *= -1 + } + return n, nil +} -- cgit v1.2.3