【问题标题】:replace a string partially with something else用其他东西部分替换字符串
【发布时间】:2017-12-26 06:42:33
【问题描述】:

假设我有这样的图片地址

https://firebasestorage.googleapis.com/v0/b/myproj-d.appspot.com/o/FILE_NAME.jpg?alt=media&token=124bb2bf-c6ef-432b-92c7-7032563ba31b

如何将 FILE_NAME.jpg 替换为 THUMB_FILE_NAME.jpg 注意:FILE_NAME 和 THUMB_FILE_NAME 不是静态的并且是固定的。

FILE_NAME 不固定,我不能使用 string.replace 方法。 最终我不知道 File_Name

【问题讨论】:

标签: javascript


【解决方案1】:

使用replace

.replace(/(?<=\/)[^\/]*(?=(.jpg))/g, "THUMB_FILE_NAME")

或者如果你想支持多种格式

.replace(/(?<=\/)[^\/]*(?=(.(jpg|png|jpeg)))/g, "THUMB_FILE_NAME")

演示

var output = "https://firebasestorage.googleapis.com/v0/b/myproj-d.appspot.com/o/FILE_NAME.jpg?alt=media&token=124bb2bf-c6ef-432b-92c7-7032563ba31b".replace(/(?<=\/)[^\/]*(?=(.jpg))/g, "THUMB_FILE_NAME");
console.log( output );

说明

  • (?&lt;=\/) 匹配 / 但不记得匹配项
  • [^\/]* 匹配直到找到下一个 /
  • (?=(.jpg) 确保匹配以 .jpg 结尾

要匹配 FILE_NAME,请使用

.match(/(?<=\/)[^\/]*(?=(.(jpg|png|jpeg)))/g)

【讨论】:

  • 你支持哪些格式..你可以做到(?=(.(jpg|png)))
  • 谢谢。这样可行。以及如何获取原始FILE_NAME并添加THUMB_前缀并重新生成URL地址?
  • 可以将replace替换成match得到原版FILE_NAME
  • 你能举个例子吗
  • 如果没有扩展名(如.jpg),那么如果文件名没有任何扩展名怎么办
【解决方案2】:
var pattern = /[\w-]+\.(jpg|png|txt)/
var c = 'https://firebasestorage.googleapis.com/v0/b/myproj-d.appspot.com/o/FILE_NAME.jpg?alt=media&token=124bb2bf-c6ef-432b-92c7-7032563ba31b
'
c.replace(pattern, 'YOUR_FILE_NAME.jpg')

您可以在管道运算符中添加任何格式

【讨论】:

  • 如何获取原始File_Name并添加thumb_前缀并重新生成URL?
  • @SaJed 获取文件名,您应该使用提供的 pattern.that 进行搜索。
【解决方案3】:

您可以使用字符串的替换方法。

var a = "https://firebasestorage.googleapis.com/v0/b/myproj-d.appspot.com/o/FILE_NAME.jpg?alt=media&token=124bb2bf-c6ef-432b-92c7-7032563ba31b";
a = a.replace('FILE_NAME', 'THUMB_FILE_NAME');

【讨论】:

  • 我不知道 FILE_NAME 和文件扩展名是什么。那不是静态的。
  • 如果您知道格式,可以使用 split 和 join 将 FILE_NAME 替换为 THUMB_FILE_NAME。
【解决方案4】:

如果你知道格式,你可以使用 split 和 join 来替换 FILE_NAME。

let str = "https://firebasestorage.googleapis.com/v0/b/myproj-d.appspot.com/o/FILE_NAME.jpg?alt=media&token=124bb2bf-c6ef-432b-92c7-7032563ba31b";
let str_pieces = str.split('/');
let str_last = str_pieces[str_pieces.length - 1];
let str_last_pieces = str_last.split('?');
str_last_pieces[0] = 'THUMB_' + str_last_pieces[0];
str_last = str_last_pieces.join('?');
str_pieces[str_pieces.length - 1] = str_last;
str = str_pieces.join('/'); 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-07-03
    • 1970-01-01
    • 1970-01-01
    • 2020-12-04
    • 1970-01-01
    • 2019-07-20
    • 1970-01-01
    相关资源
    最近更新 更多