2014-11-05 7 views
0

Это странный вопрос.Javascript - замена определенного количества символов в строке и остальное остальное

По сути, я подумал, что было бы крутой идеей позволить пользователю ввести строку, преобразовать эту строку в base64 и создать образ.

Хотя я не изучен в base64, я знаю, что изображения имеют данные заголовка и должны быть определенной длины. Мне удалось отделить данные base64, которые сообщают цвета изображения. Прямо сейчас у меня есть основное белое изображение - you can check a js fiddle here - (не уверен, что он работает там, но он работает в моем браузере).

В любом случае переменная «imgdata» является исходными данными для моего изображения PNG, и именно это я хотел бы изменить. К сожалению, для этой строки требуется определенное количество символов или изображение не будет работать (предположим, что это размер, указанный в заголовке?)

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

TL; DR

У меня есть эта строка -

aaa 

, и я хочу, чтобы заменить эту строку -

123456 

С string1 всего 3 символов, я только хочу он заменит первые 3 символа строки2 , поэтому результат будет выглядеть так:

aaa456 

запомнить, что строка1 будет отличаться по длине.

+1

Посмотрите на '.slice() и'. length' для строк, и вы должны найти весь ответ, который вам нужен. – jfriend00

+0

- строки, которые считаются массивами в Javascript аналогично Java, или мне нужно сделать что-то вроде создания нового массива и присвоить каждому символу новый индекс? –

+0

№ Строки не являются массивами в Javascript. Строки имеют собственный набор методов, и нет необходимости помещать их в массивы для решения вашей проблемы. Возможно, вам нужно ознакомиться с методами, доступными по строкам, прямо [здесь] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String). Тривиально получить первые или последние N символов строки с '.slice()', а затем добавить две строки обратно вместе, что все, что вам нужно для решения вашей проблемы. – jfriend00

ответ

1

Создать String, содержащие значения по умолчанию:

var fullLength = "abcdefg"; 

Получить ввод данных пользователя в качестве другой строки:

var user = "aaa"; 

Создать третью строку, которая представляет собой сочетание пользовательских данных и конец по умолчанию:

var combined = user + fullLength.substring(user.length); 

Поскольку JavaScript является слабо типизированным языка, вам необходимо убедиться, что вы работаете со строковыми объектами. Вы можете сделать это с помощью конкатенации с пустой строкой, которая будет убедиться, что все работы строковых функций:

var userString = userInput + ""; 

Кроме того, есть три очень похожие функции String, slice(), substr() и substring(). Проведите некоторое исследование MDN, чтобы узнать, что лучше для вас.

+0

Отлично! Благодарю. –

+0

Darn - Я действительно надеялся, что OP сможет понять эту довольно тривиальную задачу, после того как ей будет показан документ для строкового объекта и будет указывать на соответствующий метод, но я думаю, что это не так, как работает SO. – jfriend00

+0

@ jfriend00, я работаю с Javascript уже более года. Это тривиально, но на самом деле я никогда не сталкивался с чем-то подобным раньше (по крайней мере, в Javascript). Более или менее я не знал о тех функциях, которые мне были нужны, и тема была трудной для исследования. Из того, что я понимаю, ваш метод включает в себя включение каждого символа в массив, вырезание тех, которые мне не нужны, а затем добавление. Метод Уоррена выглядит немного проще (по крайней мере, из того, что я могу сказать). –

0

Метод среза Javascript может использоваться самостоятельно для решения проблемы. Первый параметр для среза определяет первую позицию символа для захвата. Второй параметр (положение остановки) может быть опущен, что означает, что вы получите оставшуюся часть строки.При использовании длины в качестве первого параметра означает, что он будет пропускать как можно больше характера, так как длина, а затем площадку с остальной частью содержимого б:

a + b.slice(a.length) // 'aaa456' 
+0

Один кодовый блок не дает хорошего ответа. Пожалуйста, добавьте объяснения (почему он решает проблему, где была ошибка и т. Д.) –

+0

Согласен. Я добавил более подробную информацию о функции среза и почему он подходит только как самое простое решение для решения проблемы. –

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