C#如何查找“ fps”前的逗号空格位置以提取长度不固定的FPS数值
从ffmpeg输出字符串中提取FPS数值的两种实现方案
方案1:按索引截取思路实现
你已经可以通过IndexOf拿到 fps的位置,接下来直接从该位置向前查找最近的, 分隔符位置即可,代码示例(C#):
string processOutput = "你的ffmpeg输出字符串"; int fpsSuffixPos = processOutput.IndexOf(" fps"); if (fpsSuffixPos > 0) { // 从fps后缀位置向前搜索最近的前导`, `分隔符 int separatorPos = processOutput.LastIndexOf(", ", fpsSuffixPos); if (separatorPos > 0) { // 截取两个位置中间的内容并去除首尾空白字符 string fpsValueStr = processOutput.Substring(separatorPos + 2, fpsSuffixPos - separatorPos - 2).Trim(); double fps = double.Parse(fpsValueStr); } }
该方案性能更高,适合批量处理大量输出字符串的场景。
方案2:正则匹配(更简便)
直接通过正则规则匹配, 和 fps中间的数值部分,无需手动处理索引逻辑,代码更简洁:
using System.Text.RegularExpressions; // 匹配规则:逗号+空格开头,后接整数/小数,后接空格+fps Match fpsMatch = Regex.Match(processOutput, @", (\d+\.?\d*) fps"); if (fpsMatch.Success) { double fps = double.Parse(fpsMatch.Groups[1].Value); }
该方案代码可读性更高,无需手动处理边界判断逻辑。
内容的提问来源于stack exchange,提问作者SideSky
相关产品推荐
相关产品推荐

