Как найти позицию или расположение строки в данном документе

Как найти положение или расположение строки в данном документе. У меня есть один текстовый документ, и я хочу сохранить все его слова и позиции слов в базе данных, поэтому мне нужно найти положение слов.

поэтому, пожалуйста, скажите мне, как я могу найти положение или расположение слова или строки в данном документе.

я намерен использовать vb.net или c# для документов и документов .doc


person ryder1211212    schedule 26.02.2010    source источник
comment
Вместо того, чтобы хранить все позиции? Рассматривали ли вы динамический расчет позиций некоторых слов или текста. Просто кажется, что просматривать документ и сохранять позиции всех слов утомительно.   -  person sidney.andrews    schedule 26.02.2010
comment
да .. ну для начала мне нужно иметь возможность штрафовать каждую позицию, затем удалять стоп-слова и сохранять позиции, которые мне действительно нужны   -  person ryder1211212    schedule 01.03.2010


Ответы (1)


Мммм... Я не нашел более умного решения :-/ но, может быть, это поможет вам... Предположим, что в вашей системе установлена ​​какая-то версия MS Office.

Прежде всего, вы должны добавить в свой проект ссылку на компонент Microsoft COM под названием «Библиотека объектов Microsoft Word ?*».

*? Это зависит от версии вашего MS Office

После того, как вы добавили ссылку, вы можете протестировать этот код:

using System;
using System.Collections.Generic;
using System.Text;
using Word;

namespace ConsoleApplication1
{
    class Program
    {

        static void Main(string[] args)
        {

            // Find the full path of our document

            System.IO.FileInfo ExecutableFileInfo = new System.IO.FileInfo(System.Reflection.Assembly.GetEntryAssembly().Location);            
            object docFileName = System.IO.Path.Combine(ExecutableFileInfo.DirectoryName, "document.doc");

            // Create the needed Word.Application and Word.Document objects

            object nullObject = System.Reflection.Missing.Value;
            Word.Application application = new Word.ApplicationClass();
            Word.Document document = application.Documents.Open(ref docFileName, ref nullObject, ref nullObject, ref nullObject, ref nullObject, ref nullObject, ref nullObject, ref nullObject, ref nullObject, ref nullObject, ref nullObject, ref nullObject);


            string wholeTextContent = document.Content.Text; 
            wholeTextContent = wholeTextContent.Replace('\r', ' '); // Delete lines between paragraphs
            string[] splittedTextContent = wholeTextContent.Split(' '); // Get the separate words

            int index = 1;
            foreach (string singleWord in splittedTextContent)
            {
                if (singleWord.Trim().Length > 0) // We don´t need to store white spaces
                {
                    Console.WriteLine("Word: " + singleWord + "(position: " + index.ToString() + ")");
                    index++;
                }
            }

            // Dispose Word.Application and Word.Document objects resources

            document.Close(ref nullObject, ref nullObject, ref nullObject);
            application.Quit(ref nullObject, ref nullObject, ref nullObject);
            document = null;
            application = null;

            Console.ReadLine(); 
        }
    }
}

Проверю, вроде работает =)

person Javier    schedule 26.02.2010
comment
большое спасибо, это работает ..... я только что увеличил отсутствующий аргумент до 16 из-за моей версии слова COM, и ему нужно несколько штрихов, так как он отображает только последний абзац любого документа, большое спасибо - person ryder1211212; 01.03.2010
comment
=) Я рад, что это помогло вам. Привет - person Javier; 01.03.2010
comment
Пока я писал этот ужасный код, я подумал, что хорошей идеей было бы узнать больше об открытых офисных библиотеках для .NET... - person Javier; 01.03.2010
comment
неплохая идея, босс .... в данный момент я по уши в проектах, еще раз большое спасибо за помощь, я добавил удаление стоп-слов и смог сохранить то, что мне нужно, в базе данных ps. в приведенном выше коде я пытаюсь динамически изменить имя файла со страницы aspx, используя process.start и получая значения из main(), но пока безуспешно. - person ryder1211212; 16.03.2010