65 lines
1.5 KiB
Go
65 lines
1.5 KiB
Go
package main
|
|
|
|
import (
|
|
"errors"
|
|
"fmt"
|
|
"strconv"
|
|
"strings"
|
|
)
|
|
|
|
// ParseRange 解析区间字符串,返回两个整数(起始值和结束值)
|
|
func ParseRange(rangeStr string) (int, int, error) {
|
|
parts := strings.Split(rangeStr, "-")
|
|
if len(parts) != 2 {
|
|
return 0, 0, errors.New("invalid range format")
|
|
}
|
|
|
|
start, err := strconv.Atoi(parts[0])
|
|
if err != nil {
|
|
return 0, 0, errors.New("invalid start number in range")
|
|
}
|
|
|
|
end, err := strconv.Atoi(parts[1])
|
|
if err != nil {
|
|
return 0, 0, errors.New("invalid end number in range")
|
|
}
|
|
|
|
return start, end, nil
|
|
}
|
|
|
|
// IsInRange 检查给定的区间是否在已知范围内,并返回已知范围字符串(如果匹配)
|
|
func IsInRange(inputRangeStr, knownRangeStr string) (string, error) {
|
|
knownStart, knownEnd, err := ParseRange(knownRangeStr)
|
|
if err != nil {
|
|
return "", err
|
|
}
|
|
|
|
inputStart, inputEnd, err := ParseRange(inputRangeStr)
|
|
if err != nil {
|
|
return "", err
|
|
}
|
|
|
|
// 检查输入区间是否在已知范围内
|
|
fmt.Println("parsing inputStart : ", inputStart)
|
|
fmt.Println("parsing knownStart : ", knownStart)
|
|
fmt.Println("parsing inputEnd : ", inputEnd)
|
|
fmt.Println("parsing knownEnd : ", knownEnd)
|
|
if inputStart >= knownStart && inputEnd <= knownEnd {
|
|
return knownRangeStr, nil // 返回已知范围字符串
|
|
}
|
|
|
|
return "", errors.New("input range is not within the known range")
|
|
}
|
|
|
|
func main() {
|
|
inputRange := "1-10"
|
|
knownRange := "0-100"
|
|
|
|
result, err := IsInRange(inputRange, knownRange)
|
|
if err != nil {
|
|
fmt.Println("Error:", err)
|
|
} else {
|
|
fmt.Println("Known Range:", result)
|
|
}
|
|
}
|