Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Автоформатирование текста Добавлено: 24.03.05 09:40  

Автор вопроса:  gvozd | Web-сайт: www.gvozdsoft.com
Мужики, помогите/натолкнит/расскажите как сделать автоформатирование. В автоформатирование должно обязательно входить: расставление правильных
знаков препинания (дефисы, тире, минусы, кавычки, одинарные пробелы, запятые
и точки с правильными промежутками), "вы" с маленькой буквы, замещение
лишних заглавных букв строчными, расставление больших букв в собственных
именах и в начале предложений, точек - в конце предложений, проставление ё
вместо е, где этого требует произношение, проверка орфографии и правильности
написания словарных слов и их форм.

Ответить

  Ответы Всего ответов: 11  

Номер ответа: 1
Автор ответа:
 GSerg



Вопросов: 0
Ответов: 1876


 Профиль | | #1 Добавлено: 24.03.05 10:25
Нехило.

А как ты будешь (вернее, прога будет...) отличать "вы" при обращении к группе (тогда с маленькой) от "Вы" при обращении к одному человеку (тогда с большой)? А как прога узнает, что именно здесь должно кончаться предложение, и нужно поставить точку?
Расставлять запятые? Это в языке, не поддающемся строго формальному разложению - а русский именно такой? Вон, Ворд на что крутой, а с запятыми ошибается и ошибаться будет.
Собственные имена? Есть такое женское имя - Олимпиада. Справишься с авторазличением - когда что имеется в виду?
Расставлять Ё? Ё! Есть слова, которые с Ё и без Ё разные. Например, все/всё. Небо/нёбо. Ведро/вёдро. Как их автоформаттер будет обрабатывать?
Орфография? Недоперепил - это слово. как и перенедоел. :) А в словаре их нет.

Ответить

Номер ответа: 2
Автор ответа:
 gvozd



Разработчик Offline Client

Вопросов: 164
Ответов: 1317


 Web-сайт: www.gvozdsoft.com
 Профиль | | #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-сайт: basicproduction.nm.ru
 Профиль | | #4
Добавлено: 24.03.05 11:45
По моему над тобой прикололись ;) А если тебе в следующий раз дадут задание чтобы оно само ещё и текст набирало вместо машинистки?

Ответить

Номер ответа: 5
Автор ответа:
 gvozd



Разработчик Offline Client

Вопросов: 164
Ответов: 1317


 Web-сайт: www.gvozdsoft.com
 Профиль | | #5
Добавлено: 24.03.05 11:46
В смысле развенчать?
А как определить буквенно-цифровой символ или нет?

Ответить

Номер ответа: 6
Автор ответа:
 gvozd



Разработчик Offline Client

Вопросов: 164
Ответов: 1317


 Web-сайт: www.gvozdsoft.com
 Профиль | | #6
Добавлено: 24.03.05 11:48
CyRax, я умею отговаривать. ;) Я уже от одной тупости раньше их отговорил, думаю и в этот раз отговорю. Просто решил спросить, может кто-то из вас уже ИИ написал. :)

Ответить

Номер ответа: 7
Автор ответа:
 gvozd



Разработчик Offline Client

Вопросов: 164
Ответов: 1317


 Web-сайт: www.gvozdsoft.com
 Профиль | | #7
Добавлено: 25.03.05 16:51
GSerg, как определить буквенно-цифровой символ или нет?

Ответить

Номер ответа: 8
Автор ответа:
 CyRax



Разработчик Offline Client

ICQ: 204447456 

Вопросов: 180
Ответов: 4229
 Web-сайт: basicproduction.nm.ru
 Профиль | | #8
Добавлено: 25.03.05 17:02
Есть такая API функция IsCharAlphaNumeric. Не уверен правда подойдёт ли она для твоей ситуации.

Ответить

Номер ответа: 9
Автор ответа:
 ZagZag



ICQ: 295002202 

Вопросов: 87
Ответов: 1684
 Профиль | | #9 Добавлено: 25.03.05 19:46
Дам макрос для WORD, мы это еще года два назад проходили :)

Sub FormatText()
'
' 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-сайт: www.gvozdsoft.com
 Профиль | | #10
Добавлено: 26.03.05 11:51
Во че я накатал:
Public Function Autoreplace(TextBox As Object, Koma As Boolean, Fullstop As Boolean, DoubleSpace As Boolean)
    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 = " "
        ;DoubleSpace = 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
ИМХО, мой пример лучше переделать - он функциональнее

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам