用dart写一个版本号的比较,结果返回-1,0,1。版本号可能存在特殊字符,要剔除特殊字符。
时间: 2024-05-01 13:16:57 浏览: 12
以下是一个使用Dart编写的版本号比较函数,可以处理特殊字符:
```dart
int compareVersions(String version1, String version2) {
// 剔除特殊字符并分割版本号
List<String> v1 = version1.replaceAll(RegExp(r'[^\d\.]+'), '').split('.');
List<String> v2 = version2.replaceAll(RegExp(r'[^\d\.]+'), '').split('.');
// 将版本号补齐为相同长度
while (v1.length < v2.length) {
v1.add('0');
}
while (v2.length < v1.length) {
v2.add('0');
}
// 逐位比较版本号
for (int i = 0; i < v1.length; i++) {
int num1 = int.parse(v1[i]);
int num2 = int.parse(v2[i]);
if (num1 < num2) {
return -1;
} else if (num1 > num2) {
return 1;
}
}
// 版本号完全相同
return 0;
}
```
这个函数首先使用正则表达式从版本号中剔除特殊字符,并将版本号分割成数字部分。然后将两个版本号补齐为相同长度,以便逐位比较。最后,如果两个版本号的数字部分完全相同,则返回0;如果版本号1小于版本号2,则返回-1;否则返回1。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)