Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   str.replace('^0',''); (https://javascript.ru/forum/misc/8919-str-replace-%27%5E0%27-%27%27-%3B.html)

mycoding 20.04.2010 22:10

str.replace('^0','');
 
ПОчему нельзя сделать вот так, или как то похоже, почему надо специально заводить переменную RegExp или писать не в кавычках и в / /
можно ли это как-то обойти, чтобы всё писать в кавычка без новой переменной?
str="0 1 10 0 10 10 1";
i=str.replace('^0','');
alert(i);

Nekromancer 20.04.2010 22:12

str="0 1 10 0 10 10 1";
i=str.replace(new RegExp('^0'),'');
alert(i);

Gozar 20.04.2010 22:21

хм, вы о чем, чем вам // не угодили?
alert("0 1 10 0 10 10 1".replace(/^0/, ''));

Octane 20.04.2010 22:24

Потому что необязательно использовать регулярное выражение, можно просто заменить подстроку.
alert("aabbcc".replace("bb", "11"));

mycoding 20.04.2010 22:26

А если быдет такой вариант
window.str="0 1 10 10 20 0";
function change(a)
{
return window.str.replace("(^|\\s)"+a+"($|\\s)",'.......');
}
alert(change('1'));

Nekromancer 20.04.2010 22:27

то нифига не будет

mycoding 20.04.2010 22:30

ВОт то и оно что хочется именно такой вариант :)

Nekromancer 20.04.2010 22:34

Чем оно хочется?

Octane 20.04.2010 22:37

В PHP есть str_replace и ereg_replace, а ту все в один метод объединили, поэтому для агрументов типа string и regexp разное поведение.

Ну если сильно хочется, то можно добавить свой метод:
String.prototype.replaceEx = function (search, flags, replace) {
    if (arguments.length == 2) {
        replace = flags;
        flags = undefined;
    }
    return this.replace(new RegExp(search, flags), replace);
};


alert("aa bb cc aa".replaceEx("aa$", "ee"));

mycoding 20.04.2010 22:47

Спасибо Октан, эх если здесь можно было не ограничено ставить +
я бы тебе ёже тысяч на 100 поставил :thanks:


Часовой пояс GMT +3, время: 22:17.