2016-03-16 4 views
1

У меня есть строки входя в мой Javascript вариации могут быть .. Foo Bar (двойное пространство) или Foo BarJQuery заменить строку, если ее двойное пространство или единое пространство

В настоящее время я уже эту работу, если она имеет единое пространство, заменить подчеркивание

var string = 'John Doe'; 
var fixedString = string.replace(/\s+/, "_"); 

$('#display').text(fixedString); 

Но я хочу, чтобы быть в состоянии сделать это, если это двойное пространство тоже ..

В результате Foo Bar будет прикреплен к Foo__Bar

+0

'' 'string.replace (/ [] []/г, '__'); '' ' – Alaeddine

+0

yourstring.replace (/ [''] +/g," _ ") –

ответ

3

Просто используйте функцию полезности Slug

function convertToSlug(str) { 
    return str.replace(/ /g,'_'); 
} 

Демонстрация ниже

var text = 'Foo Bar,Single Space,Many  Spaces' 
 

 
//from https://gist.github.com/vko-online/4c7699a78e48963310ae 
 
function convertToSlug(str) { 
 
    return str.replace(/ /g,'_'); 
 
} 
 

 
var $orig = document.querySelector('#orig'), 
 
    $slug = document.querySelector('#slug'); 
 

 
$orig.textContent = text; //although text has 2 spaces, h1 tag remove 1 
 
$slug.textContent = convertToSlug(text);
<h1 id="orig"></h1> 
 
<h1 id="slug"></h1>

+0

Но какова цель использования' .replace (/ [^ \ w -] +/g, '') 'с OP дело? –

+0

Мне нужно использовать if, чтобы заменить либо одно пространство, либо два пробела. – Kieron606

+0

@ A.Wolff да, он просто удаляет '-' тире, он был задуман автором, просто удалил его –

0

Используйте этот

yourstring.replace(/[' ']+/g, "_")

var string = 'John  Doe'; 
string1 = "John doe" 


string.replace(/[' ']+/g, "_"); //'John_Doe' 
string1.replace(/[' ']+/g, "_"); //'John_Doe' 

ИЛИ если вы хотите заменить каждый пробел одним _ затем использовать этот один

string.replace(/[' ']/g, "_"); 
Смежные вопросы