如何使用javascript替换字符串中的单词?

如何使用javascript替换字符串中的单词?,javascript,Javascript,我有一根绳子 mystr = 'public\uploads\file-1490095922739.jpg'; 我想换一个 公共\上传 使用“”,这样我只想提取文件名 文件编号:149009922739.jpg 或者说 \上载\file-149009922739.jpg 我如何做到这一点,在js中是否有任何方法可以做到这一点,或者我们可以通过replace方法做到这一点 我正在执行以下步骤 var imagepath1; var imagepath = 'public\uploads\file

我有一根绳子

mystr = 'public\uploads\file-1490095922739.jpg';
我想换一个

公共\上传

使用“”,这样我只想提取文件名

文件编号:149009922739.jpg

或者说

\上载\file-149009922739.jpg

我如何做到这一点,在js中是否有任何方法可以做到这一点,或者我们可以通过replace方法做到这一点

我正在执行以下步骤

var imagepath1;
var imagepath = 'public\uploads\file-1490095922739.jpg';
unwantedChar = 'public|uploads';
regExp = new RegExp(unwantedChar , 'gi');
imagepath = imagepath.replace(regExp , '');
imagepath1 = imagepath;
$scope.model.imagepath = imagepath1.replace(/\\/g, "");

请向我推荐优化方法。

也许我不理解这个问题,但这不管用吗

var mystr = 'public\uploads\file-1490095922739.jpg';
var filename = mystr.replace('public\uploads', '');
那就做吧:

var imagepath = 'public\\uploads\\file-1490095922739.jpg';
$scope.model.imagepath = imagepath.replace('public\\uploads\\', '');
而不是使用一堆不必要的变量

这样您就可以获得文件路径,删除
public\uploads\
,然后将文件路径设置为
$scope.model.imagepath

请注意,仅当图像文件路径始终匹配
'public\uploads\*FILENAME*'
时,此操作才有效

var input = "public\\uploads\\file-1490095922739.jpg";
var result = input.replace("public\\uploads\\", "");

这就是您要找的,不需要花哨的正则表达式:)。可以找到有关替换的详细信息。

如果要获取最后一个反斜杠字符后的字符串部分,可以使用以下方法:

var filename = mystr.substr(mystr.lastIndexOf('\\') + 1);
还要注意,您需要转义测试字符串中的反斜杠字符:

var mystr = 'public\\uploads\\file-1490095922739.jpg';

搜索最后一个正斜杠,并用字符串的长度对字符串(+1,因为不需要斜杠)进行切片以获得文件名。这样,您就不必担心路径是否始终存在。

您要查找的部分是否始终位于最后一个``字符之后?不,我想删除“public\uploads”一词,以便保留文件名“file.jpg”。这不是同一回事吗?换句话说,
public\uploads
后面除了一个用反斜杠分隔的文件名之外,还能跟其他任何东西吗?是的,没错!!!!!那么,如果输入是
\uploads\file-1490095922739.jpg
,该怎么办呢?我尝试了同样的方法,但它抛出了以下错误:无效的Unicode转义序列啊,是的,正如@Dax指出的那样-您需要转义斜杠。:-)是的,这很好,需要转义斜杠:-)未捕获的语法错误:无效的Unicode转义序列,,,,,,,,,上述逻辑工作正常
var url = '/anysource/anypath/myfilename.gif';
var filename = url.slice(url.lastIndexOf('/')+1,url.length);