Страница: 1 |
Страница: 1 |
Вопрос: Автоформатирование текста
Добавлено: 24.03.05 09:40
Автор вопроса: gvozd | Web-сайт:
Мужики, помогите/натолкнит/расскажите как сделать автоформатирование. В автоформатирование должно обязательно входить: расставление правильных
знаков препинания (дефисы, тире, минусы, кавычки, одинарные пробелы, запятые
и точки с правильными промежутками), "вы" с маленькой буквы, замещение
лишних заглавных букв строчными, расставление больших букв в собственных
именах и в начале предложений, точек - в конце предложений, проставление ё
вместо е, где этого требует произношение, проверка орфографии и правильности
написания словарных слов и их форм.
Ответы
Всего ответов: 11
Номер ответа: 1
Автор ответа:
GSerg
Вопросов: 0
Ответов: 1876
Профиль | | #1
Добавлено: 24.03.05 10:25
Нехило.
А как ты будешь (вернее, прога будет...) отличать "вы" при обращении к группе (тогда с маленькой) от "Вы" при обращении к одному человеку (тогда с большой)? А как прога узнает, что именно здесь должно кончаться предложение, и нужно поставить точку?
Расставлять запятые? Это в языке, не поддающемся строго формальному разложению - а русский именно такой? Вон, Ворд на что крутой, а с запятыми ошибается и ошибаться будет.
Собственные имена? Есть такое женское имя - Олимпиада. Справишься с авторазличением - когда что имеется в виду?
Расставлять Ё? Ё! Есть слова, которые с Ё и без Ё разные. Например, все/всё. Небо/нёбо. Ведро/вёдро. Как их автоформаттер будет обрабатывать?
Орфография? Недоперепил - это слово. как и перенедоел. А в словаре их нет.
Номер ответа: 2
Автор ответа:
gvozd
Разработчик Offline Client
Вопросов: 164
Ответов: 1317
Web-сайт:
Профиль | | #2
Добавлено: 24.03.05 11:22
GSerg, ну понимаешь, я сотрудничаю с одной дизайн-студией, и вот они выставили вот такие возможности.
А что насчет
и точки с правильными промежутками
Номер ответа: 3
Автор ответа:
GSerg
Вопросов: 0
Ответов: 1876
Профиль | | #3
Добавлено: 24.03.05 11:39
Что, и это тоже тебе развенчать?
Ладно, не буду
Определи список символов, относящихся к категории "знак препинания". По все тексту пройдись последовательно, и если перед символом из разряда "знак препинания" стоит не буквенно-цифровой символ, то удалить его нафиг. Повторять удаление, пока не появится буквенно-цифровой. Справа же от "знака препинания" должен стоять пробел. Если нет, вставить.
После всего этого делать replace(s," ", " ", пока длина строки не перестанет изменяться.
Номер ответа: 4
Автор ответа:
CyRax
Разработчик Offline Client
ICQ: 204447456
Вопросов: 180
Ответов: 4229
Web-сайт:
Профиль | | #4
Добавлено: 24.03.05 11:45
По моему над тобой прикололись А если тебе в следующий раз дадут задание чтобы оно само ещё и текст набирало вместо машинистки?
Номер ответа: 5
Автор ответа:
gvozd
Разработчик Offline Client
Вопросов: 164
Ответов: 1317
Web-сайт:
Профиль | | #5
Добавлено: 24.03.05 11:46
В смысле развенчать?
А как определить буквенно-цифровой символ или нет?
Номер ответа: 6
Автор ответа:
gvozd
Разработчик Offline Client
Вопросов: 164
Ответов: 1317
Web-сайт:
Профиль | | #6
Добавлено: 24.03.05 11:48
CyRax, я умею отговаривать. Я уже от одной тупости раньше их отговорил, думаю и в этот раз отговорю. Просто решил спросить, может кто-то из вас уже ИИ написал.
Номер ответа: 7
Автор ответа:
gvozd
Разработчик Offline Client
Вопросов: 164
Ответов: 1317
Web-сайт:
Профиль | | #7
Добавлено: 25.03.05 16:51
GSerg, как определить буквенно-цифровой символ или нет?
Номер ответа: 8
Автор ответа:
CyRax
Разработчик Offline Client
ICQ: 204447456
Вопросов: 180
Ответов: 4229
Web-сайт:
Профиль | | #8
Добавлено: 25.03.05 17:02
Есть такая API функция IsCharAlphaNumeric. Не уверен правда подойдёт ли она для твоей ситуации.
Номер ответа: 9
Автор ответа:
ZagZag
ICQ: 295002202
Вопросов: 87
Ответов: 1684
Профиль | | #9
Добавлено: 25.03.05 19:46
Дам макрос для WORD, мы это еще года два назад проходили
'
' FormatText Макрос
' Макрос записан 20.03.2005 ZagZag
'
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
ReplaceInText "^w", " "
ReplaceInText "^p ", "^p"
ReplaceInText " ", ""
ReplaceInText " )", ""
ReplaceInText " .", "."
ReplaceInText " ,", ","
ReplaceInText "^p^p", "^p"
ReplaceInText "-^p", ""
ReplaceInText ",^p", " "
ReplaceInText " - ", " ^+ "
ReplaceInText ",- ", ",^+ "
ReplaceInText "- ", " ^+ "
End Sub
Private Sub ReplaceInText(strWho As String, strWhat As String)
With Selection.Find
.Text = strWho
.Replacement.Text = strWhat
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchByte = False
.CorrectHangulEndings = False
.MatchAllWordForms = False
.MatchSoundsLike = False
.MatchWildcards = False
.MatchFuzzy = False
End With
Selection.Find.Execute Replace:=wdReplaceAll
End Sub
WM: Z810311312808 Сыпьте сюда
Номер ответа: 10
Автор ответа:
gvozd
Разработчик Offline Client
Вопросов: 164
Ответов: 1317
Web-сайт:
Профиль | | #10
Добавлено: 26.03.05 11:51
Во че я накатал:
Dim i As Long
Dim SearchStr As String
Dim EndOfSearch As Boolean
Dim StrToReplace As String
i = 1
EndOfSearch = False
Options:
If Koma = True Then
SearchStr = " ,"
StrToReplace = ","
Koma = False
GoTo Begin
ElseIf Fullstop = True Then
SearchStr = " ."
StrToReplace = "."
Fullstop = False
ElseIf DoubleSpace = True Then
SearchStr = " "
StrToReplace = " "
 oubleSpace = False
Else
Exit Function
End If
Begin:
Do While EndOfSearch = False
If InStr(i, TextBox.Text, SearchStr) <> 0 Then
TextBox.SetFocus
TextBox.SelStart = InStr(i, TextBox.Text, SearchStr) - 1
TextBox.SelLength = Len(SearchStr)
i = 1
TextBox.SelText = StrToReplace
Else
EndOfSearch = True
End If
Loop
EndOfSearch = False
GoTo Options
End Function
Номер ответа: 11
Автор ответа:
ZagZag
ICQ: 295002202
Вопросов: 87
Ответов: 1684
Профиль | | #11
Добавлено: 28.03.05 02:46
ИМХО, мой пример лучше переделать - он функциональнее