2016-04-07 4 views
1

В настоящее время у меня есть это общее сообщение об ошибке в моем скрипте, которое я хотел бы заменить более подробными сведениями.Замена элементов в строке

errorMessage: "Your selected file, {{fileName}}, is not a proper format of {{formats}}" 

Я хотел бы заменить fileName с именем файла они выбрали.

Это то, что я работаю до сих пор:

validateError(
    errorMessage.replace(/{{formats}}/, formatArray) 
); 

Так что я попытался это:

validateError(
     errorMessage.replace(/{{formats}}/, formatArray), 
     errorMessage.replace(/{{fileName}}/, inputFile.name) 
    ); 

при запуске этого {{имя_файла}} появляется этот путь, и не заменяется имя файла. inputFile - объявленная переменная, которая уже имеет информацию о данных файла, поэтому я знаю, что это имя существует.

Что я делаю неправильно или не замечаю?

+0

Что выводит имя inputFile.name при использовании 'console.log (inputFile.name)'? – compuhosny

+0

@AhmadHosny - фактическое имя файла. Например: starsInSky.doc - мне интересно, связано ли это с двумя операциями замены в одном методе – 072et

+0

Не хватает ли вы правой скобки в конце первой замены? – compuhosny

ответ

2

Функция .replace не мутирует строку (строки в JavaScript неизменяемы), но возвращает новую строку. Таким образом, вы можете либо сохранить результат в переменной или цепочке звонков .replace. Кроме того, поскольку вы используете регулярное выражение, я рекомендую избегать {, так как это особый символ или вместо этого используется только string.

Сохранение переменной (используя строку вместо регулярных выражений):

var formatReplaced = errorMessage.replace('{{formats}}', formatArray); 
validateError(formatReplaced.replace('{{fileName}}', inputFile.name)); 

Или цепочки .replace вызовов (спасаясь специальных регулярных выражений символов):

validateError(errorMessage.replace(/\{\{formats\}\}/, formatArray).replace(/\{\{fileName\}\}/, inputFile.name)); 

Я бы также рекомендовал давать переменные лучше имена. При чтении formatArray я предположил, что это массив, пока вы не отметили, что он работал с функцией replace. Я бы рекомендовал что-то вроде userFormat.

+0

по какой-либо причине Я все еще не получаю замену '{{fileName}}'. Он просто отображается на странице как «{{fileName}}' – 072et

+0

Я понятия не имею, что может произойти. Код работает при тестировании в консоли браузера. Не могли бы вы отредактировать свой пост с помощью большего количества кода, который вы используете? Спасибо! – hargasinski

+0

Получил это! Я был не в порядке с моим '(' что странно, потому что он не жаловался, когда я строю. Большое спасибо! – 072et

Смежные вопросы