Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 10.01.2018, 13:44
Интересующийся
Отправить личное сообщение для IAmTrying Посмотреть профиль Найти все сообщения от IAmTrying
 
Регистрация: 22.12.2017
Сообщений: 15

Немогли бы вы помочь с регулярным выражением
function replaceBrackets(text){
	var newSt = text.replace(/\' | \'|\'\,|\'\./g, function(match){
		if (match == " \'"){
			
			return " \"";
		} else if (match == "\' "){
			
			return "\" ";
		} else if (match == "\'\,"){
			
			return "\"\,";
		} else if (match == "\'\.") {
			
			return "\"\.";
		} else {
			console.log("Something wrong");
		}
});
	console.log(newSt);
};

replaceBrackets("'vxcvcvcxv' 'sdasvsdfsdfdasd' 'dsdasdas', 'pizza!' 'dsdfsdfsdsds' aren't 'you', 'b' 'you'.?, 'df'. 'dfg' 'dgfe' 'dfgvc' 'vcxsdf' ");


Вот результат ('vxcvcvcxv" 'sdasvsdfsdfdasd" 'dsdasdas", "pizza!" 'dsdfsdfsdsds" aren't "you", "b" 'you".?, "df". "dfg" 'dgfe" 'dfgvc" 'vcxsdf")


Подскажите, почему не срабатывает первая замена ? И если я хочу вначале строки поменять, могу ли я испльзовать это выражение /^\'/. Если можно, то улучшите код сразу. Посмотрю как надо. Спасибо.

Последний раз редактировалось IAmTrying, 10.01.2018 в 14:07.
Ответить с цитированием
  #2 (permalink)  
Старый 10.01.2018, 13:48
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,072

IAmTrying,
что делает функция?
Ответить с цитированием
  #3 (permalink)  
Старый 10.01.2018, 13:52
Интересующийся
Отправить личное сообщение для IAmTrying Посмотреть профиль Найти все сообщения от IAmTrying
 
Регистрация: 22.12.2017
Сообщений: 15

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

Последний раз редактировалось IAmTrying, 10.01.2018 в 14:08.
Ответить с цитированием
  #4 (permalink)  
Старый 10.01.2018, 13:57
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,730

function replaceBrackets(str){
return str.replace(/['|"]/g,function(char){
return char=="'"?'"':"'";
});
};


upd. по наименованию функции подумал, что нужно заменить кавычки...

Последний раз редактировалось Nexus, 10.01.2018 в 14:03.
Ответить с цитированием
  #5 (permalink)  
Старый 10.01.2018, 13:59
Интересующийся
Отправить личное сообщение для IAmTrying Посмотреть профиль Найти все сообщения от IAmTrying
 
Регистрация: 22.12.2017
Сообщений: 15

Только что поставил по два пробела, оно заработало, это мне возножно надо делать его, как я прочитал: "Не жадным" с помощью "?", если да, то как его применить? Или вообще в правилах написания кода моя функция выглядит совсем глупо и ее нужно переписать.
Ответить с цитированием
  #6 (permalink)  
Старый 10.01.2018, 14:05
Интересующийся
Отправить личное сообщение для IAmTrying Посмотреть профиль Найти все сообщения от IAmTrying
 
Регистрация: 22.12.2017
Сообщений: 15

Да, но не все, только те что вне слов Но спасибо за помощь, твой метод интересен, я такого еще не прочитал) Немного забежал вперед)
Ответить с цитированием
  #7 (permalink)  
Старый 10.01.2018, 14:08
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,072

IAmTrying,
не осилил ваших сообщений
replaceBrackets("'vxcvcvcxv' 'sdasvsdfsdfdasd' 'dsdasdas', 'pizza!' 'dsdfsdfsdsds' aren't 'you', 'b' 'you'.?, 'df'. 'dfg' 'dgfe' 'dfgvc' 'vcxsdf' ");

что на выходе хотите получить?
Ответить с цитированием
  #8 (permalink)  
Старый 10.01.2018, 14:11
Интересующийся
Отправить личное сообщение для IAmTrying Посмотреть профиль Найти все сообщения от IAmTrying
 
Регистрация: 22.12.2017
Сообщений: 15

Нужно сделать замену одинарных кавычек на двойные, те что в словах типа "aren't, don't" проигнорировать. Извиняюсь за сумбур.
Ответить с цитированием
  #9 (permalink)  
Старый 10.01.2018, 14:33
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,072

IAmTrying,
так?
<!DOCTYPE html>

<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
  </style>


</head>

<body>

  <script>
function replaceBrackets(text){
  return text.replace(/\'(\S*?)\'/g, '\"$1\"');
};

document.write(replaceBrackets("'vxcvcvcxv' 'sdasvsdfsdfdasd' 'dsdasdas', 'pizza!' 'dsdfsdfsdsds' aren't 'you', 'b' 'you'.?, 'df'. 'dfg' 'dgfe' 'dfgvc' 'vcxsdf' "));

  </script>
</body>
</html>

Последний раз редактировалось рони, 10.01.2018 в 14:49.
Ответить с цитированием
  #10 (permalink)  
Старый 10.01.2018, 14:39
Интересующийся
Отправить личное сообщение для IAmTrying Посмотреть профиль Найти все сообщения от IAmTrying
 
Регистрация: 22.12.2017
Сообщений: 15

А не нифига, а если там не слово, а строка попадается в кавычках, не срабатывает(

Последний раз редактировалось IAmTrying, 10.01.2018 в 14:41.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Укоротить длинну строки регулярным выражением 1lider Общие вопросы Javascript 2 09.05.2014 06:44
помогите с регулярным выражением Axios Элементы интерфейса 3 13.01.2013 20:47
Чтение строки регулярным выражением Dorian_bs Общие вопросы Javascript 5 24.11.2012 08:26
Нужно обрезать путь до файла регулярным выражением javascript_pupil Общие вопросы Javascript 3 22.11.2010 11:46
Извлечь значение параметра из location.search регулярным выражением? Бобр Общие вопросы Javascript 8 26.01.2010 01:01