从文件名中提取版本

2024-04-10

这是我的示例文件名Text_2.23.txt我已经分离了扩展,但无法获取版本,因此我可以稍后在代码中使用它进行比较。我需要得到2.23 out,

编辑:文件名可以采用多种形式,但版本始终位于文件名的末尾。

string s = f1.Name.ToString(); //for the Filename
int k = s.LastIndexOf('.');
string lhs = k < 0 ? s : s.Substring(0, k), 
    rhs = k < 0 ? "" : s.Substring(k + 1);

char[] array = lhs.ToCharArray();

Array.Reverse(array);           // reverse search from right to left
for (int j = 0; j < array.Length; j++)
{   
    char letter = array[j];     //the letter I get out in the sample case is "3" 
}

Use the Path and Version课程:

string fileName = "Text_2.23.txt";
string fn = Path.GetFileNameWithoutExtension(fileName);
string[] parts = fn.Split('_');

Version v;
if (parts.Length > 1 && Version.TryParse(parts.Last(), out v))
{
    Console.Write("Major:{0}, Minor:{1}", v.Major, v.Minor);
}

Demo http://ideone.com/YFe2mj

Edit:因为您已经评论过您的文件名几乎可以是任意的,但版本始终位于末尾,而您只是想要这样string.

与您评论的样本:

string[] fileNames = new[] { "teext_023.ext", "txtxt.x9.08.ext", "text0911.ext" };
string[] versions = fileNames
    .Select(fileName =>
        Path.GetFileNameWithoutExtension(fileName).Split('_')
            .Last()
            .Reverse()
            .TakeWhile(c => c == '.' || Char.IsDigit(c))
            .Reverse()
    ).Select(chars => new string(chars.ToArray())).ToArray();

Demo http://ideone.com/ElPztq

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从文件名中提取版本 的相关文章

  • 为什么我不能用 `= delete;` 声明纯虚函数?

    Intro 纯虚函数使用通用语法声明 virtual f 0 然而 自 c 11 以来 有一种方法可以显式地传达non existence 特殊 成员函数的 Mystruct delete eg default constructor Q
  • 32 位应用程序的特征最大矩阵大小

    所以 我正在寻找Eigen http eigen tuxfamily org index php title Main Page当我尝试声明大于 10000x10000 的矩阵时 包崩溃 我需要声明一个像这样的矩阵 可靠地大约有 13000
  • C++:重写已弃用的虚拟方法时出现弃用警告

    我有一个纯虚拟类 它有一个纯虚拟方法 应该是const 但不幸的是不是 该接口位于库中 并且该类由单独项目中的其他几个类继承 我正在尝试使用这个方法const不会破坏兼容性 至少在一段时间内 但我找不到在非常量方法重载时产生警告的方法 以下
  • 构造函数中显式关键字的使用

    我试图了解 C 中显式关键字的用法 并查看了这个问题C 中的explicit关键字是什么意思 https stackoverflow com questions 121162 但是 那里列出的示例 实际上是前两个答案 对于用法并不是很清楚
  • 对齐 GridView 中的行值

    我需要在 asp net 3 5 中右对齐 gridview 列中的值 我怎样才能做到这一点
  • 如何配置 WebService 返回 ArrayList 而不是 Array?

    我有一个在 jax ws 上实现的 java Web 服务 此 Web 服务返回用户的通用列表 它运行得很好 Stateless name AdminToolSessionEJB RemoteBinding jndiBinding Admi
  • 从多个类访问串行端口

    我正在尝试使用串行端口在 arduino 和 C 程序之间进行通信 我对 C 编程有点陌生 该程序有多种用户控制形式 每一个都需要访问串口来发送数据 我需要做的就是从每个类的主窗体中写入串行端口 我了解如何设置和写入串行端口 这是我的 Fo
  • 如何识别 WPF 文本框中的 ValidationError 工具提示位置

    我添加了一个箭头来指示工具提示中的文本框 当文本框远离屏幕边缘时 这非常有效 但是当它靠近屏幕边缘时 工具提示位置发生变化 箭头显示在左侧 Here is the Image Correct as expected since TextBo
  • C 语言中 =+(等于加)是什么意思?

    我碰到 与标准相反 今天在一些 C 代码中 我不太确定这里发生了什么 我在文档中也找不到它 In ancientC 版本 相当于 它的残余物与最早的恐龙骨头一起被发现 例如 B 引入了广义赋值运算符 使用x y to add y to x
  • 在非活动联合成员上使用“std::addressof”是否定义明确[重复]

    这个问题在这里已经有答案了 下面的代码是尝试实现constexpr的版本offsetof在 C 11 中 它可以在 gcc 7 2 0 和 clang 5 0 0 中编译 这取决于申请std addressof工会非活跃成员的成员 这是明确
  • Azure 事件中心 - 按顺序接收事件

    我使用下面的代码从 Azure Event Hub 接收事件 https learn microsoft com en us azure event hubs event hubs dotnet framework getstarted s
  • 无法将类型“System.IO.Stream”隐式转换为“Java.IO.InputStream”

    我提到了一些类似的问题 但没有一个涉及IO 当我使用时 我在java中使用了相同的代码Eclipse 那次就成功了 但现在我尝试在中使用这段代码Mono for Android C 它不起作用 我正在尝试运行此代码来创建一个InputStr
  • 如何重置捕获像素的值

    我正在尝试创建一个 C 函数 该函数返回屏幕截图位图中每四个像素的 R G 和 B 值 这是我的代码的一部分 for int ix 4 ix lt 1366 ix ix 4 x x 4 for int iy 3 iy lt 768 iy i
  • 生产代码中的 LRU 实现

    我有一些 C 代码 需要使用 LRU 技术实现缓存替换 目前我知道两种实现LRU缓存替换的方法 每次访问缓存数据时使用时间戳 最后比较替换时的时间戳 使用缓存项的堆栈 如果最近访问过它们 则将它们移动到顶部 因此最后底部将包含 LRU 候选
  • 将构建日期放入“关于”框中

    我有一个带有 关于 框的 C WinForms 应用程序 我使用以下方法将版本号放入 关于 框中 FileVersionInfo GetVersionInfo Assembly GetExecutingAssembly Location F
  • 在 C 中使用 GNU automake 中的解析器

    我是 GNU autotools 的新手 在我的项目中使用了 lex 和 yacc 解析器 将它们作为 makefile am 中的源代码会产生以下错误 配置 in AC CHECK PROGS YACC bison yacc none i
  • 有没有一种简单的方法可以让 Visual Studio 2015 使用特定的 ToolsVersion?

    使用特定版本构建项目或解决方案时msbuild我可以使用以下命令选择早期的 net 工具链 toolsversion or tv switch C Program Files x86 MSBuild 14 0 bin msbuild tv
  • 转到定义:“无法导航到插入符号下的符号。”

    这个问题的答案是社区努力 help privileges edit community wiki 编辑现有答案以改进这篇文章 目前不接受新的答案或互动 我今天突然开始在我的项目中遇到一个问题 单击 转到定义 会出现一个奇怪的错误 无法导航到
  • 双精度类型二维多维数组的 pinvoke 编组作为 c# 和 c++ 之间的输入和输出

    我有以下我正在尝试解决的双物质类型的 2d 多维数组的 c 和 c pinvoke 编组 我已经查看了以下热门内容以获得我目前拥有的内容使用双精度数组进行 P Invoke 在 C 和 C 之间编组数据 https stackoverflo
  • 用于 C# XNA 的 Javascript(或类似)游戏脚本

    最近我准备用 XNA C 开发另一个游戏 上次我在 XNA C 中开发游戏时 遇到了必须向游戏中添加地图和可自定义数据的问题 每次我想添加新内容或更改游戏角色的某些值或其他内容时 我都必须重建整个游戏或其他内容 这可能需要相当长的时间 有没

随机推荐

  • 是否可以拥有不可变的 JPA 实体?

    在我们的 Hibernate 项目中 实体是使用 Java bean 模式进行编码的 我们的代码中有很多地方有人忘记设置变异器 并且由于以下原因我们得到了异常NOT NULL约束 是否有人使用构建器来构建他们的实体或使它们不可变 我正在尝试
  • 在 strace 中捕获 vDSO

    我想知道是否有一种方法可以捕获 换句话说观察 vDSO 调用 例如gettimeofday in strace 另外 有没有一种方法可以在不加载的情况下执行二进制文件linux vdso so 1 标志或环境变量 最后 如果我编写一个程序来
  • 使用java查找selenium对象标签

    我以前的代码工作没有问题 并且能够使用 selenium 在网页中找到对象标记 没有任何问题 我正在使用 Chrome 驱动程序来访问该页面 因为我注意到当我使用 IE 时 DOM 内部没有显示任何内容 并且我需要访问对象标记的内容 也就是
  • 运行进程隐藏的Python

    我是 python 新手 正在编写新代码 需要一些帮助 主要文件 import os import time import sys import app import dbg import dbg import me sys path ap
  • Internet Explorer 和剪辑路径

    据我所知 clip path 应该在 IE 中工作 如许多文章和本教程中所示CSS 屏蔽 http www html5rocks com en tutorials masking adobe redirect from locale fr
  • 创建自签名 SSL 证书时出错

    我尝试根据链接中的说明创建自签名证书mosca MQTT 代理的安全密钥和证书 https stackoverflow com questions 39913842 security key and cert for mosca mqtt
  • 将实体框架中的字符串列映射到枚举

    有没有办法将字符串列映射到实体模型中的枚举 我已经在 Hibernate 中完成了此操作 但在 EMF 中无法弄清楚 可能是更好的版本 OrderStateIdentifier 字段用于 JSON 序列化和数据库字段 而OrderState
  • Spring Boot MongoDB 连接问题

    我的 Spring Boot 应用程序正在尝试连接到 MongoDB 数据库 配置添加到 application yml 文件中 直到昨天 该应用程序在本地运行得完全正常 但是今天当我在本地主机上本地运行它时 我收到以下错误 2020 12
  • ngClass 中的多个类

    我正在尝试在 ngClass 中添加多个值 该值过去适用于以前的 alpha 版本 但现在似乎不适用于 angular2 beta i i 它会产生一个错误 异常 类型错误 无法读取未定义的属性 add fa fa star 在 PostV
  • 策略模式和命令模式的区别

    两者有什么区别策略模式 http en wikipedia org wiki Strategy pattern和命令模式 http en wikipedia org wiki Command pattern 我也在寻找一些 Java 的例子
  • 我可以将其序列化为 json 字符串并查看它,而不是使用反射来循环访问类属性吗?它有什么缺点吗?

    假设我有一个像下面这样的课程 class Student public int ID get set public string Name get set 只是还有 10 个属性 我想循环遍历这些属性 我可以通过反射来完成 这会有性能成本
  • 使用 ODataQueryOptions 扩展导航属性

    我正在构建一个 OData v 4 Web 服务 该服务必须公开从另一个第 3 方 Web 源检索的数据 因此该数据与 LINQ 世界中的任何内容都不相同 即 没有 IQueryable 没有 Context 什么都没有 解决方法似乎是手动
  • 在 Win32 上构建适用于 Android (ARMv7) 的 OpenSSL

    如何在 Win32 上构建适用于 Android ARM v7 使用 Android NDK 的 OpenSSL 直到 OpenSSL 的出现wiki http wiki openssl org index php Android和 set
  • 如何在 JMeter 中使用命令行参数

    我正在使用 Jmeter 测试 API 我想从终端参数化项目的路径 然后我想在 JMeter 中使用此参数 我通过命令行发送的参数 jmeter n t your script jmx Jurl abcdef com 我在用户定义变量中使用
  • 使用 itext pdf stamper 在 pdf 中添加多个附件

    我想在一个 pdf 文件中添加多个附件 当我进入循环时 它只附加最后一个附件 示例代码 PdfReader reader new PdfReader FILE PdfStamper stamper new PdfStamper reader
  • 在 Android Studio 中丢失对静态数据的引用

    当我的应用程序进入后台时 我遇到静态数据实例丢失的问题 从而导致空指针异常错误 静态数据非常依赖于上下文或 状态 并且通常不能在初始化时生成 为了确保我保留这些数据 我是否会被迫将数据写入存储 或者是否有其他方法来确保我的静态数据在应用程序
  • win10 应用程序 - 在列表顶部的新项目中添加动画

    我正在制作一个新闻源应用程序 它会定期将新内容添加到列表顶部 当我检查新商品时 可能有几十件或只有一件 我想要的是让最旧的新项目能够看到 这样他们就可以继续向上滚动以获取更新的故事 遗憾的是 该平台并不是免费提供的 然而有趣的是 它确实是免
  • 使用 pysnmp 从 MIB 文本约定转换 OID 值对

    我正在尝试编写一段代码 它接受一个 JSON 对象 其中 OID 作为键 OID 值作为值 一个例子是 1 3 6 1 4 1 562 29 6 2 3 Link Down 收到此 JSON 对象时 我想使用 PySNMP 转换 OID 和
  • 在哪里提供 NSURL 值?

    每次我运行该应用程序时 它都会崩溃并且控制台显示 由于未捕获的异常 MissingDatabaseURL 而终止应用程序 原因 无法获取 FirebaseDatabase 实例 在 FIRApp 中或从您的 databaseForApp U
  • 从文件名中提取版本

    这是我的示例文件名Text 2 23 txt我已经分离了扩展 但无法获取版本 因此我可以稍后在代码中使用它进行比较 我需要得到2 23 out 编辑 文件名可以采用多种形式 但版本始终位于文件名的末尾 string s f1 Name To