【问题标题】:Find the string in a array with the highest version number在数组中查找版本号最高的字符串
【发布时间】:2017-07-10 16:41:40
【问题描述】:

我正在制作一个简单的脚本,用于升级用户正在处理的脚本。此脚本应检查当前工作文件夹中的最新版本并将版本增加 1。

这是我正在使用的文件夹之一的示例,这是按名称排序的。

>     TES_DAS_010_COMP_ARTIST_v001_01.comp
>     TES_DAS_010_COMP_ARTIST_v005_01.comp
>     TES_DAS_010_COMP_ESKI_v002_01.comp
>     TES_DAS_010_COMP_ESKI_v004_01.comp
>     TES_DAS_010_COMP_ESKI_v004_02.comp
>     TES_DAS_010_COMP_ESKI_v004_03.comp
>     TES_DAS_010_COMP_ESKI_v006_01.comp
>     TES_DAS_010_COMP_ESKI_v007_01.comp
>     TES_DAS_010_COMP_NEWGUY_v008_01.comp
>     TES_DAS_010_COMP_NEWGUY_v003_01.comp

现在我有了要升级版本的用户 ESKI。所以我需要找到一种方法来识别什么是最新版本并从中增加。 在此示例中,当前版本为“TES_DAS_010_COMP_NEWGUY_v008_01.comp”。

如何定位最新的文件,以便制作名为“TES_DAS_010_COMP_ESKI_v009_01.comp”的新版本

【问题讨论】:

  • 好像你也有子版本。它们有用吗?如果这都是自动生成的,您可以查看创建的最新日期。
  • 不,颠覆无关紧要。市长版本是我要追求的。
  • 不错的主意,它们都是由脚本创建的,所以理论上它们都应该有正确的时间戳。手动强制检查我会感觉更好.. :)
  • 那么您要做的就是获取这些字符串中的每一个并将主要 v### 版本号加一?

标签: arrays vb.net visual-studio


【解决方案1】:

只是我会做什么的基本指南,也许我在这里遗漏了一些东西,但这似乎只是一个带有转换和比较检查的标准循环,对吗?如果我在这里遗漏了一个复杂的部分,请原谅我。

用循环遍历数组,用indexof找到版本号的常量起始索引,也许使用“_v”作为搜索条件,然后从新计算的开始处取字符串的substring indexof 并在 3 个字符后结束,将三个字符串解析/转换为数字,将其存储在比较变量中,并检查循环的每次迭代是否大于当前存储的最高值。一旦你完成了你的号码,你可能可以使用 linq 用一个非常小的代码块来完成它。

【讨论】:

  • 这个应该可以,我只是想多了这个问题.. :)
  • 不,实际上.. 如果我能整理出最高版本并获得整个字符串名称,那就太棒了。猜猜我正在寻找一种方法来做到这一点。可能把它放在 2 列数组中并按版本排序..?
  • 如果您只需要最高版本的字符串 - 当您在循环中存储/检查比较变量时,您可以将整个字符串存储在附加变量中,或者将比较变量作为字典或其他构造并存储您正在解析的当前最高比较版本号,然后您可以存储整个字符串本身或最高的数组索引,并在稍后使用它时进行查找。如果您希望它是可排序的,那么您可以在解析要排序的版本列时重新创建数组。
猜你喜欢
  • 2021-07-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-29
  • 2020-06-19
相关资源
最近更新 更多