go 比较两个字符串的版本号大小
2017-01-12 00:00
453 查看
package main import "fmt" func VersionOrdinal(version string) string { // ISO/IEC 14651:2011 const maxByte = 1<<8 - 1 vo := make([]byte, 0, len(version)+8) j := -1 for i := 0; i < len(version); i++ { b := version[i] if '0' > b || b > '9' { vo = append(vo, b) j = -1 continue } if j == -1 { vo = append(vo, 0x00) j = len(vo) - 1 } if vo[j] == 1 && vo[j+1] == '0' { vo[j+1] = b continue } if vo[j]+1 > maxByte { panic("VersionOrdinal: invalid version") } vo = append(vo, b) vo[j]++ } return string(vo) } func main() { versions := []struct{ a, b string }{ {"1.05.00.0156", "1.0.221.9289"}, // Go versions {"1", "1.0.1"}, {"1.0.1", "1.0.2"}, {"1.0.2", "1.0.3"}, {"1.0.3", "1.1"}, {"1.1", "1.1.1"}, {"1.1.1", "1.1.2"}, {"1.1.2", "1.2"}, } for _, version := range versions { a, b := VersionOrdinal(version.a), VersionOrdinal(version.b) switch { case a > b: fmt.Println(version.a, ">", version.b) case a < b: fmt.Println(version.a, "<", version.b) case a == b: fmt.Println(version.a, "=", version.b) } } }
相关文章推荐
- shell中怎么比较两个字符串的大小?
- 比较两个字符串大小
- (顺序存储)比较两个字符串A和B大小
- 在js中如何比较两个时间字符串的大小
- php实现比较两个字符串日期大小的方法
- C语言中比较两个字符串的大小
- java中两个字符串如何比较大小
- (链式存储)比较两个字符串A和B大小
- 比较两个字符串的大小
- 比较两个字符串的大小(指针法)
- 在XSLT中比较两个字符串的大小
- java中两个字符串比较大小
- 比较两个字符串的大小
- Compare Version Numbers 版本大小比较 字符串处理
- .NET中如何比较两个版本号的大小
- 如何比较两个时间字符串的大小
- C语言实现比较两个字符串的大小
- php两个长数字或字符串的比较大小
- java中两个字符串如何比较大小
- php实现比较两个字符串日期大小的方法