0 / 0 / 1
Регистрация: 24.08.2016
Сообщений: 4
1

Как удалить все пробелы в строке, и если есть кавычки, то между ними пробелы заменить на %

25.08.2016, 11:32. Показов 4341. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Как удалить все пробелы в строке, и если есть кавычки, то между ними пробелы заменить на %?

Вот пример строки:
PHP
1
$str = 'Большая, длинная строка, "где есть пробелы". В кавычках текст не менять, а за их "пределами удалить" ';
Как сделать, чтобы на выходе было: Большая,длинная строка,"где%есть%пробелы".Вкавычкахтекстнеменять,азаих"пределами%удалить"
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.08.2016, 11:32
Ответы с готовыми решениями:

Удалить в строке все лишние пробелы, то есть серии подряд идущих пробелов заменить на одиночные пробелы
Я уже решал эту задачу с помощью циклов и символьных массивов, и выкладывал на этот форум , но я не...

Во введенном тексте удалить все пробелы, если пробелы присутствуют
Создать программу, которая спрашивает имя пользователя и здоровается с ним. Затем, предлагается...

Во введенной строке удалить пробелы, все строчные символы «а» заменить на прописные «А»
В веденной строке удалить пробелы, все строчные символы «а» заменить на прописные «А» и вывести...

В строке удалить все пробелы между первым и вторым вопросительным знаком
Введите строку. Удалить все пробелы между первым и вторым вопросительным знаком.

4
46 / 46 / 43
Регистрация: 04.10.2012
Сообщений: 224
25.08.2016, 12:36 2
Лучший ответ Сообщение было отмечено deniska2511 как решение

Решение

Решение довольно не короткое, но вроде работает, как ожидалось ?

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
$str = 'Большая, длинная строка, "где есть пробелы". В кавычках текст не менять, а за их "пределами удалить" ';
 
$i=0;
$arr = array();
 
do
{
    if(isset($m[0]))
    {
        //получаем и обрабатываем строку из кавычек
        $update_sub = $m[0];
        $update_sub = str_replace(' ','%',$update_sub);
        
        $i++;
        //заменяем на теги
        $str = str_replace($m[0], "{tag_$i}", $str);        
        
        $arr[$i] = $update_sub;     
        
    }
    
}while(preg_match('/".*\s+.*"/U',$str, $m));
 
 
 
do //меням обратно теги на строки
{
    $str = str_replace("{tag_$i}", $arr[$i], $str);     
    $i--;
    
}while($i > 0);
 
 
$str = str_replace(' ','',$str);
 
var_dump($str); //Большая,длиннаястрока,"где%есть%пробелы".Вкавычкахтекстнеменять,азаих"пределами%удалить
1
Фрилансер
Эксперт JSЭксперт HTML/CSSЭксперт PHP
1846 / 1342 / 599
Регистрация: 12.01.2011
Сообщений: 5,432
25.08.2016, 14:32 3
Лучший ответ Сообщение было отмечено deniska2511 как решение

Решение

PHP
1
2
3
4
5
6
$str = 'Большая, длинная строка, "где есть пробелы". В кавычках текст не менять, а за их "пределами удалить" ';
$_   = preg_replace_callback("~(\"[^\"]+\")~ui",function($m){
        $m[1] = str_replace(" ","%",$m[1]);
        return $m[1];
    },$str);
echo str_replace(' ','',$_);
1
2170 / 1653 / 840
Регистрация: 10.01.2015
Сообщений: 5,192
25.08.2016, 14:43 4
PHP
1
2
3
$str = 'Большая, длинная строка, "где есть пробелы". В кавычках текст не менять, а за их "пределами удалить" ';
preg_match_all("/(\".*\"[.]|\"[^\"]+\")/ui", $str, $m);
echo $str_new = str_replace(" ", "", str_replace($m[0], str_replace(" ", "%", $m[0]), $str));

Не по теме:

Кто во что горазд :D

0
Фрилансер
Эксперт JSЭксперт HTML/CSSЭксперт PHP
1846 / 1342 / 599
Регистрация: 12.01.2011
Сообщений: 5,432
25.08.2016, 14:50 5
Цитата Сообщение от warma2d Посмотреть сообщение
$str = str_replace("{tag_$i}", $arr[$i], $str);
str_replace может проводить замену и в массиве если что . Его в цикле не было смысла запускать
PHP
1
2
$p = "privet :)";
echo str_replace(["privet",":)"],["poka",":("],$p);
Добавлено через 5 минут
Цитата Сообщение от Пифагор Посмотреть сообщение
.*
тут заменить бы на .+
ибо * 0,n
А это нас не устраивает , совпадение должно быть.
Иначе и нет смысла проверять.
2
25.08.2016, 14:50
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.08.2016, 14:50
Помогаю со студенческими работами здесь

Удалить все символы в строке, не являющиеся буквами и заменить множественные пробелы одним
Ребята,буду запредельно благодарен.

Удалить все символы в строке, не являющиеся буквами, а также заменить множественные пробелы одним
Удалить все символы в строке, не являющиеся буквами, а также заменить множественные пробелы одним....

Получить все символы, расположенные после первого двоеточия. Если среди них есть пробелы, удалить их
Даны натуральное число n и символы t1, t2, ..., tn, среди которых есть двоеточие. Получить все...

Как удалить все числа и пробелы в строке?
Пробелы удаляются, а из цифр удаляется только часть. string line; getline(text, line);...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru