Обрезка строки с конца в Javascript - PullRequest
2 голосов
/ 04 января 2012

В Javascript, как я могу обрезать строку на количество символов от конца, добавить еще одну строку и снова добавить изначально обрезанную строку?

В частности, у меня есть filename.png и я хочу превратить его в filename-thumbnail.png.

Я ищу что-то вроде:

var sImage = "filename.png";
var sAppend = "-thumbnail";
var sThumbnail = magicHere(sImage, sAppend);

Ответы [ 5 ]

7 голосов
/ 04 января 2012

Вы можете использовать .slice, который принимает отрицательные индексы:

function insert(str, sub, pos) {
    return str.slice(0, pos) + sub          + str.slice(pos);
    //     "filename"        + "-thumbnail" + ".png"
}

Использование:

insert("filename.png", "-thumbnail", -4); // insert at 4th from end
3 голосов
/ 04 января 2012

Попробуйте использовать регулярное выражение (Хорошую документацию можно найти по адресу https://developer.mozilla.org/en/JavaScript/Guide/Regular_Expressions)

Я не проверял, но попробуйте что-то вроде:

var re = /(.*)\.png$/;  
var str = "filename.png";  
var newstr = str.replace(re, "$1-thumbnail.png");  
console.log(newstr);
1 голос
/ 04 января 2012

Я бы использовал регулярное выражение, чтобы найти различные части имени файла, а затем переставил и добавил строки по мере необходимости.

Примерно так:

var file='filename.png';

var re1='((?:[a-z][a-z0-9_]*))';
var re2='.*?';
var re3='((?:[a-z][a-z0-9_]*))';

var p = new RegExp(re1+re2+re3,["i"]);
var m = p.exec(file);
if (m != null) {
    var fileName=m[1];
    var fileExtension=m[2]; 
}

Это даст вам имя вашего файла в fileName и расширение файла в fileExtension. Оттуда вы можете добавить или добавить все, что вы хотите.

var newFile = fileName + '-thumbnail' + '.' + fileExtension;
0 голосов
/ 04 января 2012

Вы можете использовать регулярное выражение и сделать что-то вроде этого:

var sImage = "filename.png";
var sAppend = "-thumbnail$1";
var rExtension = /(\.[\w\d]+)$/;

var sThumbnail = sImage.replace(rExtension, sAppend);

rExtension - это регулярное выражение, которое ищет расширение, фиксируя его в $1. Вы увидите, что $1 появляется внутри sAppend, что означает «поставить расширение здесь».

РЕДАКТИРОВАТЬ: Это решение будет работать с любым расширением файла любой длины. Смотрите это в действии здесь: http://jsfiddle.net/h4Qsv/

0 голосов
/ 04 января 2012

Возможно, проще, чем регулярные выражения, вы можете использовать lastindexof (см. http://www.w3schools.com/jsref/jsref_lastindexof.asp), чтобы найти расширение файла (посмотрите на период - это позволяет использовать более длинные расширения файлов, такие как .html), затем использовать slice, как предложено pimvdb.

...