我有一个遵循相同模式的字符串。我需要在此字符串中动态设置文件名的第一个数字。
示例:
var newNumber = '123';
更改此
var str = '/folder1/folder2/folder3/567-7-P.jpg'
到此
var newStr = '/folder1/folder2/folder3/123-7-P.jpg'
我已经编写了一些简单的jQuery行来分解字符串,但不太确定如何使用新值重新构建它。我更喜欢使用rgex做得更整洁,但我的正则表达能力有限。
答案 0 :(得分:0)
var string = '/folder1/folder2/folder3/567-7-P.jpg';
var newvalue = '123';
var result = string.substr(string.lastIndexOf('/') + 1);
var sections = result.split('-');
var replaceit = string.replace(sections[0], newvalue);
$('p').text(replaceit);
您可以将其用作功能
function replcaeNum(imgurl , newvalue){
var result = imgurl.substr(imgurl.lastIndexOf('/') + 1);
var sections = result.split('-');
var replaceit = imgurl.replace(sections[0], newvalue);
$('p').text(replaceit);
}
并像那样使用
// replcaeNum(imgurl ,newvalue);
replcaeNum('/folder1/folder2/folder3/567-7-P.jpg','123');
答案 1 :(得分:0)
如果两者都遵循相同的模式,则此正则表达式使用([^ /] + $)来确保您不匹配文件夹而不是文件:
var path = '/folder1/folder2/folder3/567-7-P.jpg';
var newPath = string.replace(/\/\d+([^\/]+)$/, "/123$1");
// result: '/folder1/folder2/folder3/123-7-P.jpg';
如果有一个具有相同模式的文件夹:
var path = '/folder1/folder2/987-abc/567-7-P.jpg';
正则表达式只会替换文件名:
// result: '/folder1/folder2/987-abc/123-7-P.jpg';
答案 2 :(得分:0)
以下查找并替换第一次出现的斜杠,后跟一组数字,后跟带有/123-'
的短划线如果需要为不同的替换字符串进行参数化,只需动态构造替换字符串具有替换值。 http://jsfiddle.net/0bqwxf0p/
var path = '/folder1/folder2/folder3/567-7-P.jpg'
var newPath = path.replace(/\/\d+-/, '/123-');
答案 3 :(得分:0)
尝试使用.split()
,.splice()
var newNumber = "123";
var str = "/folder1/folder2/folder3/567-7-P.jpg";
// `.split` "/"
var res = str.split("/");
// `.splice` last index within `res` , `.replace` first occurrence
// of digit followed by "-" with `newNumber`
res.splice(-1, 1, res.slice(-1)[0].replace(/\d+(?=-)/, newNumber));
var newStr = res.join("/");
document.write(newStr);

答案 4 :(得分:0)
以你的榜样为基础:
var string = '/folder1/folder2/folder3/567-7-P.jpg';
var path = string.substr(0, string.lastIndexOf('/') + 1);
var filename = string.substr(string.lastIndexOf('/') + 1);
var separator = filename.indexOf('-');
var suffix = filename.substr(separator, filename.length); // -7-P.jpg
$('p').text(path + '123' + suffix);