2009-05-26 2 views
62

оригинальная строка «a, d, k» Я хочу удалить все «,» и сделать это «adk». Я пробовал: «a, d, k» .replace (/, /, ""), но он не работает. Спасибо заранее.Как удалить «,» из строки в javascript

+1

«Не работает»? Пожалуйста, дополните. Что «не работает»? – Rob

+0

Я искал те же вопросы. thnaks для сохранения моего времени – Krishna

ответ

108

Вы не назначая результат метода замены обратно в переменную. Когда вы вызываете replace, он возвращает новую строку без изменения старой.

Например, можно загрузить это в ваш любимый браузер:

<html><head></head><body> 
    <script type="text/javascript"> 
     var str1 = "a,d,k"; 
     str1.replace(/\,/g,""); 
     var str2 = str1.replace(/\,/g,""); 
     alert (str1); 
     alert (str2); 
    </script> 
</body></html> 

В этом случае str1 еще будет "a,d,k" и str2 будет "adk".

Если вы хотите изменить str1, вы должны делать:

var str1 = "a,d,k"; 
str1 = str1.replace (/,/g, ""); 
+3

+1, но вы можете просто сделать var str2; str2 = str.replace (...). Я расширил ответ на (надеюсь), улучшу его. – paxdiablo

+30

Если вы хотите сделать это без регулярного выражения 'str.split (", "). Join (" ")' – William

+0

@Lime Big thanx это очень полезно! +1 –

35

Использовать String.replace(), т.е.

var str = "a,d,k"; 
str = str.replace(/,/g, ""); 

Обратите внимание на g (глобальный) флаг на регулярное выражение, которое соответствует все экземпляры «».

+3

+1 thx для объяснения «g» также –

4

Вы можете попробовать что-то вроде:

var str = "a,d,k"; 
str.replace(/,/g, ""); 
-2

<script type="text/javascript">var s = '/Controller/Action#11112';if(typeof s == 'string' && /\?*/.test(s)){s = s.replace(/\#.*/gi,'');}document.write(s);</script>

Это более общий ответ. А может быть использовать с s= document.location.href;

4

Если U хотите удалить несколько символов, скажем, запятые и точки вы можете написать

<script type="text/javascript"> 
    var mystring = "It,is,a,test.string,of.mine" 
    mystring = mystring.replace(/[,.]/g , ''); 
    alert(mystring); 
</script> 
-3

Если вам нужен номер больше, чем 999,999.00 вы будете иметь проблемы.
Они подходят только для чисел менее 1 миллиона, 1 000 000.
Они удаляют только 1 или 2 запятые.

Вот сценарий, который может удалить до 12 запятых:

function uncomma(x) { 
    var string1 = x; 
    for (y = 0; y < 12; y++) { 
    string1 = string1.replace(/\,/g, ''); 
    } 
    return string1; 
} 

Изменить что для цикла, если вам нужно больше номеров.

+2

'g' в вашем регулярном выражении означает глобальное и удалит все запятые из строки на первом проходе другие 11 петель ничего не делают. Также вам не нужно избегать символа запятой в литерале. Я бы посоветовал не быть настолько враждебным и критичным в отношении ответов других людей. – JaredMcAteer

+0

Странно, что он работает для меня с 11 петлями, а не с 1 проходом. – Alex

+0

Также я не был «враждебным» или «критическим».Просто сообщая, что приведенный выше пример ошибочен и не работает для чисел, превышающих 1 миллион. Мне нужен был код, протестировал его, он провалился, и я опубликовал свое решение, которое работало только с 11 циклами, не работало с 1. Можете ли вы сказать мне, почему это так? Это противоречит тому, что вы говорите. Поэтому я не уверен. – Alex

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