Як я можу замінити рядок у JavaScript, щоб перетворити "9.61" на "9:61"?


275

Дано рядок коду

var value = $("#text").val();

і value = 9.61, мені потрібно перетворити 9.61в 9:61. Як тут можна використовувати функцію заміни JavaScript?


29
Зауважте, що це не має нічого спільного з jQuery, а лише з простим старим JavaScript.
Ікке

1
У мене схожа проблема. У мене є змінна 'var' в JavaScript, і я хочу замінити рядок / символи в ній. Я спробував цей код: var myObject = "моє% динамічне% значення \ n"; myObject = myObject.replace ("%", ""). Замінити ("\ n", ""); Також спробував myObject = myObject.replace ('%', ''). Substitute ('\ n', ''); Це дає мені помилку, що замінити не відому функцію
Balaji Birajdar

Точне повідомлення про помилку для вищезазначеного питання - "Помилка виконання Microsoft JScript: Об'єкт не підтримує властивість або метод" замінити ""
Balaji Birajdar

Відповіді:


539

Зробіть так:

var value = $("#text").val(); // value = 9.61 use $("#text").text() if you are not on select box...
value = value.replace(".", ":"); // value = 9:61
// can then use it as
$("#anothertext").val(value);

Оновлено, щоб відображати поточну версію jQuery. А також тут є маса відповідей, які найкраще підходили б до будь-якої такої ж ситуації, як ця. Вам, як розробнику, потрібно знати, що це таке.

Замініть всі події

Для того, щоб замінити кілька символів одночасно використовувати деякі речі , як це: name.replace(/&/g, "-"). Тут я замінюю всі &символи на -. gозначає "глобальний"

Примітка. Вам може знадобитися додати квадратні дужки, щоб уникнути помилки -title.replace(/[+]/g, " ")

кредити віссу та Данте Кулларі


6
Я спробував це, але помилка виникає як value.replace - це не функція :(
Nisanth Kumar

thephpdeveloper додав щось, щоб зробити його правильним ... що повинно це робити ... див. вище відредаговано
Рейгель

7
Це не спрацює, якщо ми спробуємо замінити більше одного значення одночасно. :(
vissu

56
Для того, щоб замінити кілька символів одночасно використовувати деякі речі , як це: name.replace(/&/g, "-"). Тут я замінюю всі "&" символи на "-". "g" означає "глобальний".
vissu

9
Примітка - можливо, вам потрібно буде додати квадратні дужки, щоб уникнути помилки -title.replace(/[+]/g, " ")
Dante Cullari

67

Напевно, найелегантніший спосіб зробити це - це зробити в один крок. Див val().

$("#text").val(function(i, val) {
  return val.replace('.', ':');
});

у порівнянні з:

var val = $("#text").val();
$("#text").val(val.replace('.', ':'));

З документів:

.val( function(index, value) )

функція (індекс, значення) Функція, що повертає задане значення.

Цей метод зазвичай використовується для встановлення значень полів форми. Для <select multiple="multiple"> елементів можна вибрати декілька s, передавши масив.

.val()Метод дозволяє встановити значення, передаючи функції. Станом на jQuery 1.4, функції передаються два аргументи, індекс поточного елемента та його поточне значення:

$('input:text.items').val(function(index, value) {
  return value + ' ' + this.className;
});

Цей приклад додає рядок "items" до значень введення тексту.

Для цього потрібен jQuery 1.4+.


але, як я бачу, хлопець просто хоче змінити значення, var valueа не значення в текстовому полі, як ви запропонували ...
Reigel

41

Мені подобається ланцюжок методів jQuery . Просто робіть ...

    var value = $("#text").val().replace('.',':');

    //Or if you want to return the value:
    return $("#text").val().replace('.',':');

17
це насправді не має нічого спільного з ланцюжком jquery. Після того, як ви назвали .val()це звичайним рядком.
zerkms

19

Простий вкладиш:

$("#text").val( $("#text").val().replace(".", ":") );

1
це буде працювати лише в тому випадку, якщо значенням є рядок ... а також, зателефонувавши $("#text")два рази, не є гарною практикою ...
Reigel

ОП також не $("#text")
вказала,

Коментар 1 ... Неправильно. Коментар 2 ... подумайте про логіку його питання, не потрібно вказувати.
VIDesignz

доведіть це .. і пам’ятайте, датованеJan 27 '10 at 10:16
Рейгелем

ви навіть не знаєте , хороша практика .. ви можете прочитати це .. stackoverflow.com/questions/3230727 / ...
Reigel

6

Це можна зробити за допомогою звичайної функції JavaScript replace().

value.replace(".", ":");

3
Я не впевнений, якщо я щось пропустив, але оскільки значення походить з текстового поля, це рядок ні? Приклад jsfiddle.net/xMBuA
Anders

4

Ви можете використовувати функції JavaScript, такі як заміна, і ви можете загорнути код jQuery в дужки:

var value = ($("#text").val()).replace(".", ":");


1
(9.61 + "").replace('.',':')

Або якщо ваш 9.61уже рядок:

"9.61".replace('.',':')
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.