Форум программистов, компьютерный форум, киберфорум
JavaScript
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.78/9: Рейтинг темы: голосов - 9, средняя оценка - 4.78
0 / 0 / 0
Регистрация: 17.09.2013
Сообщений: 2
1

Проверить, содержится ли пробел после знака препинания, и если нет — вставить

26.06.2014, 23:26. Просмотров 1695. Ответов 1
Метки нет (Все метки)


Пропустил весь курс по болезни, судорожно осваиваю за день. Голова кипит со строками, вот задание
2. Написать функцию, которая проверяет что в строке, переданной в качестве аргумента, содержится пробел после знака препинания, и если нет - вставляет.
Вот нароботки:
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
function f(s1)
{
if (s1.test('. '))
s1=s1.replace('.','. ')
s1=s1.replace(',',', ')
s1=s1.replace('!','! ')
s1=s1.replace('?','? ')
 
text.value=s1
 
}
</script>
<BODY>
<div id="zadanie"></div>
<input type=text id="text">
<input type=button id="button" value="Исправить!" onclick=f(text.value)>
Обработку других остальных символов и цикл еще не приделал, но боюсь, что иду в тупик. Похоже на правду?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.06.2014, 23:26
Ответы с готовыми решениями:

Написать функцию, которая проверяет что в строке содержится один пробел после знака препинания, и если нет - вставляет.
Написать функцию, которая проверяет что в строке, переданной в качестве аргумента, содержится один...

Как вставить пробел после знака препинания, если его там нет?
Приветствую! Такую вот программку реализовал. Она считывает строку (как сделать, чтобы считывала...

В заданном тексте после каждого знака препинания («.», «,», «:», «;») вставить пробел, если его там нет.
В заданном тексте после каждого знака препинания («.», «,», «:», «;») вставить пробел, если его там...

После каждого знака препинания (".", ",", ";") вставить в строку пробел, если там его нет
Выполните задания с использованием библиотечного класса string. Даны строка S. Необходимо после...

1
супермизантроп
Эксперт JS
3860 / 2934 / 685
Регистрация: 18.04.2012
Сообщений: 8,539
27.06.2014, 03:43 2
Лучший ответ Сообщение было отмечено jetter как решение

Решение

это очень легко реализуется с помощью регулярных выражений - буквально одной строкой кода, но, полагаю, что вы их ещё не проходили

поэтому делаем так:
-- перечисляем все знаки препинания в виде одной строки znak

-- перебираем циклом посимвольно исходную строку и каждый символ проверяем на наличие его в строке znak

-- если такого нет, идём дальше, к следующему символу

-- а если символ является знаком препинания (т.е. он есть в строке znak), то смотрим на последующий символ исходной строки

-- если последующий символ не пробел, то вставляем его, а если пробел, то переходим к следующему

-- ВАЖНО: каждый раз, смотря на "последующий символ", проверяем - а есть ли он? - вдруг это заключительный символ в исходной строке

-- и, наконец, последний нюанс: когда мы при необходимости добавляем недостающий пробел, внутри цикла увеличиваем индекс на единицу - зачем нам проверять следующий символ, если мы сами его туда вставили и точно знаем, что это пробел, а не знак препинания?

-- всё это реализуем с помощью формы (которую почему-то очень любят преподаватели) и, заодно, произведя исправление, выделяем строку в поле ввода, чтобы показать, что процесс завершен

HTML5
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
37
38
39
40
41
42
43
<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=windows-1251">
<title>ÄÇ</title>
<script>
function correction (str)
{
// ñîçäà¸ì ñòðîêó èç çíàêîâ ïðåïèíàíèÿ
var znak = '.,:;!?';
 
// îðãàíèçóåì öèêë ïåðåáîðà ñèìâîëîâ èñõîäíîé ñòðîêè ïî èíäåêñó j
for (var j = 0; j < str.length; j++)
   {
   // åñëè î÷åðåäíîé ñèìâîë ßÂËßÅÒÑß çíàêîì ïðåïèíàíèÿ è ÎÄÍÎÂÐÅÌÅÍÍÎ îí ÍÅ ïîñëåäíèé
   if (znak.indexOf (str.charAt (j)) != -1 && (j + 1 < str.length))
      {
      // è åñëè ïîñëåäóþùèé ñèìâîë ÍÅ ïðîáåë
      if (str.charAt (j + 1) != ' ')
         {
         // ïîëó÷àåì ïîäñòðîêó îò íà÷àëà èñõîäíîé ñòðîêè äî íàéäåííîãî çíàêà ïðåïèíàíèÿ
         var part = str.substring (0, j + 1);
         // ïðîèçâîäèì çàìåíó ïîäñòðîêè íà íå¸ æå + ïðîáåë
         str = str.replace (part, part + ' ');
         // óâåëè÷èâàåì èíäåêñ öèêëà íà åäèíèöó
         j++;
         }
      }
   }
// âîçâðàùàåì èñïðàâëåííóþ ñòðîêó
return str;
}
</script>
</head>
<body>
<form>
   <input name="mytext" size="150">
   <input type="button" value="Èñïðàâèòü"
          onclick="var obj = this.form.mytext;
                   obj.value = correction (obj.value);
                   obj.select ()">
</form>
</body>
</html>
проверял, вставив строку Строка:тут нет пробела, а здесь он есть. И есть последний восклицательный знак;после него пробел НЕ НУЖЕН!
проверьте и вы

PS. уверен, что использованные здесь методы работы со строками - charAt (), indexOf (), substring (), replace () - вы должны были проходить
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.06.2014, 03:43

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

Ввести строку символов и вставить пробел после каждого знака препинания
А как это будет написано на с#? &quot;Ввести строку символов и вставить пробел после каждого знака...

Добавление в строку пробелов после знака препинания, если их нет
Программу написала, но не смогла довести до ума. Помогите Преподаватель оставил такие замечания : ...

Добавить пробел после каждого знака препинания
&quot;Напишите функцию, которая добавляет пробел после каждого знака препинания.&quot;

Добавить после каждого знака препинания пробел
Написал вот код для задачи, но в ответе выдает ересь в конце, что делать, подскажите:( int...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.