10.01.2018, 13:44
|
Интересующийся
|
|
Регистрация: 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.
|
|
10.01.2018, 13:48
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,112
|
|
IAmTrying,
что делает функция?
|
|
10.01.2018, 13:52
|
Интересующийся
|
|
Регистрация: 22.12.2017
Сообщений: 15
|
|
Все в общем заменяет единичные апострофы на двойные(если они не в слове), а внутрення проверяет, совпадает ли регулярное выражение с тем что мне нужно и возвращает подходящую замену. Я только начал учить, потому много правил незнаю, просвещайте, мб делаю священные ошибки, каюсь(
Последний раз редактировалось IAmTrying, 10.01.2018 в 14:08.
|
|
10.01.2018, 13:57
|
Профессор
|
|
Регистрация: 04.12.2012
Сообщений: 3,791
|
|
function replaceBrackets(str){
return str.replace(/['|"]/g,function(char){
return char=="'"?'"':"'";
});
};
upd. по наименованию функции подумал, что нужно заменить кавычки...
Последний раз редактировалось Nexus, 10.01.2018 в 14:03.
|
|
10.01.2018, 13:59
|
Интересующийся
|
|
Регистрация: 22.12.2017
Сообщений: 15
|
|
Только что поставил по два пробела, оно заработало, это мне возножно надо делать его, как я прочитал: "Не жадным" с помощью "?", если да, то как его применить? Или вообще в правилах написания кода моя функция выглядит совсем глупо и ее нужно переписать.
|
|
10.01.2018, 14:05
|
Интересующийся
|
|
Регистрация: 22.12.2017
Сообщений: 15
|
|
Да, но не все, только те что вне слов Но спасибо за помощь, твой метод интересен, я такого еще не прочитал) Немного забежал вперед)
|
|
10.01.2018, 14:08
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,112
|
|
IAmTrying,
не осилил ваших сообщений
replaceBrackets("'vxcvcvcxv' 'sdasvsdfsdfdasd' 'dsdasdas', 'pizza!' 'dsdfsdfsdsds' aren't 'you', 'b' 'you'.?, 'df'. 'dfg' 'dgfe' 'dfgvc' 'vcxsdf' ");
что на выходе хотите получить?
|
|
10.01.2018, 14:11
|
Интересующийся
|
|
Регистрация: 22.12.2017
Сообщений: 15
|
|
Нужно сделать замену одинарных кавычек на двойные, те что в словах типа "aren't, don't" проигнорировать. Извиняюсь за сумбур.
|
|
10.01.2018, 14:33
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,112
|
|
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.01.2018, 14:39
|
Интересующийся
|
|
Регистрация: 22.12.2017
Сообщений: 15
|
|
А не нифига, а если там не слово, а строка попадается в кавычках, не срабатывает(
Последний раз редактировалось IAmTrying, 10.01.2018 в 14:41.
|
|
|
|