javascript - 在字符串中查找类型的最后一个字符

时间:2015-01-28 10:58:12

标签: javascript jquery string text replace

我在网站上有一些自动生成文件夹的名称。

他们的名字如下:

"folder_photos_today_1"
"folder_photos_yesterday_2"
"folder_photos_future_3"
...
"folder_potos_more_11"

每个名称末尾的数字是文件夹的ID,即插件生成的。

现在我想显示这些文件夹名称,如:

"folder photos today"
"folder photos yesterday"

使用javascript转换名称(pureJS或jQuery,并不重要)我想到找到名称中的最后一个_并删除它后面的所有内容。然后搜索其他_并用空格替换它们。

我遇到的问题: 如何使用JS找到一种类型的最后一个字符(最后_

3 个答案:

答案 0 :(得分:9)

lastIndexOf()就是你想要的:

var index = "folder_photos_future_3".lastIndexOf('_');  // returns 20

然后,您可以使用空格对_进行子串并替换。

你也可以split()你的字符串并丢弃最后一个值:

var words = "folder_photos_future_3".split('_');
words.pop();
words.join(' '); // "folder photos future"

答案 1 :(得分:1)

这个oneliner会不会更简单?

"folder_photos_today_12".replace(/_[0-9]+/g,"").replace(/_/g," ");

http://jsfiddle.net/sf2p4yua/

以下是一些解释:

.replace(/_[0-9]+/g,"") 

替换下划线的组合以及之后的一个数字,因此您将拥有此字符串folder_photos_today

.replace(/_/g," ")

替换字符串中的所有下划线:folder photos today

答案 2 :(得分:0)

希望这个plunker链接可以帮到你。

http://plnkr.co/edit/V1hFEt37GzVq7AYUVUMa?p=preview

var splitFunction = function(){

var arr = ["folder_photos_today_1",
"folder_photos_yesterday_2",
"folder_photos_future_3",
"folder_photos_four_4",
"folder_photos_five_5",
"folder_photos_six_6",
"folder_photos_seven_7",
"folder_photos_eight_8",
"folder_photos_nine_9",
"folder_photos_ten_10",
"folder_potos_more_11"];

var res = [];

document.getElementById('result').innerHTML = "<b>RESULT : </b><br/>"
for (var i =0; i<arr.length; i++){
  res[i] = arr[i].substr(0,arr[i].lastIndexOf('_'));
 res[i] = res[i].replace(/_/g, ' ');
 document.getElementById('result').innerHTML += res[i] + '<br/>';
}

}