Показать полную графическую версию : [решено] помогите упорядочить массив слов
Помогите, пожалуйста,как сделать, чтобы например из книги в док формате из всего массива текста взять случайным образом какие то слова и их выставить в столбец, страниц на 10.
примерно, чтобы это так выглядело
слово1
слово2
...
слово(n)
и такой столбик на 10 страниц. Единственное, чтобы слова не повторялись и выстраивались по алфавиту;)
1. Зачем?
2. Выкладывайте:
книги в док формате »
нечто вроде небольшого словаря составлю. это к занятиям.
вот сама книжка
http://rghost.ru/46249871
просто так она не прикреплялась, много весит)) 14 мегов
много весит)) 14 мегов »
Не пробовали воспользоваться архиватором? Есть бесплатные.
Выкладывать rtf под видом doc — моветон.
Выбор документа крайне неудачен. Из-за того, что весь (!) текст содержится во фреймах, обработка идёт дико медленно. В тексте содержится немало латинской речи и нумерации, ссылок, что не способствует составлению словаря.
Откройте Ваш rtf-файл «The Psychophysiology of Sex.doc» и сохраните его как нормальный «Документ Word (*.doc)», например, под именем «The Psychophysiology of Sex 2.doc». Укажите путь к сохранённому «The Psychophysiology of Sex 2.doc» в строке:
Set objDocument = objWord.Documents.Open("E:\Песочница\0260\The Psychophysiology of Sex 2.doc")
Укажите примерное число слов в строке:
If iCount >= 1000 Then
(1000 слов мне хватило примерно на 20 страниц).
Option Explicit
Const adVarChar = 200
Const adFldKeyColumn = 32768
Const adFilterNone = 0
Dim objWord
Dim objDocument
Dim objRange
Dim objRegExp
Dim objRecordset
Dim lngWords
Dim strWord
Dim iCount
Set objWord = WScript.CreateObject("Word.Application")
Set objRegExp = WScript.CreateObject("VBScript.RegExp")
objRegExp.Pattern = "^[A-Za-z]{2,}$"
With WScript.CreateObject("ADODB.Recordset")
.Fields.Append "Word", adVarChar, 2^8 - 1, adFldKeyColumn
.Open
.Fields.Item("Word").Properties("Optimize") = True
.Sort = "Word ASC"
Set objDocument = objWord.Documents.Open("E:\Песочница\0260\The Psychophysiology of Sex 2.doc")
lngWords = objDocument.Words.Count
For Each objRange In objDocument.Words
strWord = LCase(objRange.Text)
If objRegExp.Test(strWord) Then
.Filter = "Word = '" & strWord & "'"
If .RecordCount = 0 Then
.AddNew Array("Word"), Array(strWord)
iCount = iCount + 1
WScript.Echo "[" & CStr(iCount) & "] of [" & CStr(lngWords) & "]: " & strWord
If iCount >= 1000 Then
Exit For
End If
End If
End If
Next
objDocument.Close
Set objDocument = Nothing
.Filter = adFilterNone
.MoveFirst
Set objDocument = objWord.Documents.Add()
Do Until .EOF
objDocument.Paragraphs.Last.Range.InsertAfter .Fields.Item("Word").Value & Chr(13)
.MoveNext
Loop
Set objDocument = Nothing
.Close
End With
objWord.Visible = True
WScript.Quit 0
Вызов скрипта из-под командной строки:
cscript.exe //nologo "Путь к скрипту\Скрипт.vbs"
Так… Для полного счастья — там ещё и переносы слов некорректно распознаны, так что будьте готовы, например, к тому, что «atten» и «tion» — это два слова.
Iska, благодарствую добрый человек:))
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.
Available in ZeroNet 1osznRoVratMCN3bFoFpR2pSV5c9z6sTC