JS替换文件中版本号的一部分

Posted

技术标签:

【中文标题】JS替换文件中版本号的一部分【英文标题】:JS Replacing part of a version number within a file 【发布时间】:2020-08-01 21:18:45 【问题描述】:

我需要通过 JS 替换文件中的版本号,但我无法仅针对我需要的特定部分。我已将文件的内容读入一个变量,并将用修改后的内容覆盖整个文件。该文件如下所示(标准 wordpress style.css):

/******************************************************************
Theme Name: Starter Theme
Theme URI: 
Description: Custom Wordpress starter theme
Author: 
Author URI:
Version: 1.0.0
Tags: fluid-layout, responsive-layout, translation-ready

License: WTFPL
License URI: http://sam.zoy.org/wtfpl/
------------------------------------------------------------------*/

.sticky           /* DO NOT EDIT THIS */
.gallery-caption  /* THESE ARE USELESS */
.bypostauthor     /* THEY ARE ONLY TO KEEP THEME CHECK HAPPY */

有问题的部分是这个Version: 1.0.0

有一些细微差别似乎使这变得困难。 我只需要更改第三个数字 (0),因为前两个 (1.0) 保留用于手动编辑,需要保持原样(所以我不能只替换整个字符串或行)。我一直试图通过子字符串和/或正则表达式仅提取最后一个数字,但似乎无法弄清楚如何正确地做到这一点(因为它周围的内容不是静态的,加上版本字符串以换行符结尾) .任何帮助将不胜感激。

【问题讨论】:

【参考方案1】:
let newVersion = 3;
content = content.replace(/^Version: \d+\.\d+\.\d+$/mg, function(match, index) 
    return match.replace(/\.\d+$/, '.' + newVersion);
);

【讨论】:

它似乎在最后一个数字之前丢失了点,但除此之外,这正是我想要的!非常感谢! 是的,忘了点 :) 现在可以了【参考方案2】:

根据浏览器/nodejs 使用 readline / a for 循环遍历每一行并查找字符串版本,相应地更改数字。

【讨论】:

这基本上就是我正在做的事情,但我无法仅定位版本字符串中的最后一个数字并专门替换它。 您可以将整行版本作为字符串并将它们拆分为 . Str.split('.')。将最后一个元素替换为所需的数字并再次加入。这样就没有正则表达式的麻烦了。

以上是关于JS替换文件中版本号的一部分的主要内容,如果未能解决你的问题,请参考以下文章

JavaClass文件编译的版本号与JDK版本号的对应关系

js实现软件版本号的比较

javascript 比较版本号的js

jquery更新后怎样在一个站点中使用两个版本号的jQuery

软件版本号规范与命名原则(node.js与package.json依赖包规范)

有关不同浏览器不同版本号的css以及js计算高度的问题