У меня есть плагин для Outlook, который я написал на C #, он сканирует электронные письма и перетасовывает их в разные папки.Потому что термины, которые мы ищем, меняются достаточно часто, поэтому их добавление в программу в качестве переменных будет совершенно неприемлемо;к тому же списки довольно длинные!Я сделал так, чтобы код выполз из строки в CSV и использовал этот термин в запросе DASL.
Моя проблема в том, что когда мы должны искать слова типа «не», «не имею», «не должен», «Дейв» и другие сокращения или притяжательные существительные, возникают проблемы.Я перепробовал все, что мог придумать, чтобы улучшить проблему, к сожалению, я в растерянности.Программа работает без нареканий, если не введено сокращение.Пожалуйста, помогите:)
Наиболее релевантный фрагмент кода такой:
using (StreamReader r = new StreamReader(fileLoc))
{
//while != null to kill the loop
string line;
string prefix = @"@SQL=urn:schemas:httpmail:textdescription like '";
string postfix = @"'";
while ((line = r.ReadLine()) != null)
{
//slurp the csv line out, and spit it into DASL query.
line = prefix + line + postfix;
lines.Add(line);
}
} //closes out the streamreader object?
string[] outputArray = lines.ToArray();
return outputArray;
Мой CSV-файл выглядит примерно так:
%i do not%
%i flipped it%
%no thanks%
Когда я пытаюсь добавитьчто-то вроде%, не делай этого% или% не будет%, у меня проблемы.
Я пробовал такие вещи, как% don''t%,% "not"%,% don /'t%,% dochr (39) t%, к сожалению, все безуспешно.
Как заставить запрос DASL принять апостроф?И как мне заставить его принять этот апостроф, если он существует в записи в файле CSV?
Спасибо :))
Редактировать Это модуль, который я использую для поиска в электронных письмах сзапрос DASL, может ли он помочь кому-то решить проблему.
public void SearchEmailBodyWithArray(string[] filter)
{
//this is the workhorse of this program
MessageBox.Show("Pick Source Folder");
Outlook.MAPIFolder olFolder = Application.Session.PickFolder();
MessageBox.Show("Pick Destination Folder");
Outlook.MAPIFolder destFolder = Application.Session.PickFolder();
Outlook.Items items = olFolder.Items;
Outlook.MailItem mailItem = null;
object folderItem;
string subjectName = string.Empty;
int f = 0;
while ( f < filter.Length)
{
folderItem = items.Find(filter[f]);
while (folderItem != null)
{
mailItem = folderItem as Outlook.MailItem;
if (mailItem != null)
{
subjectName += "\n" + mailItem.Subject;
mailItem.Move(destFolder);
}
folderItem = items.FindNext();
}
f++;
}
subjectName = " The following e-mail messages were found: " +
subjectName;
MessageBox.Show(subjectName);
}