Есть ли способ настроить параметры поиска для MS Office (2003) для неанглийских символов?

StackOverflow https://stackoverflow.com/questions/1781538

  •  21-09-2019
  •  | 
  •  

Вопрос

Допустим, в MS Access есть электронная таблица или таблица, содержащая неанглийские символы (диакритические знаки), такие как à, á, â, ã, ä, å, æ, ç, è, é, ê, ë

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

То есть, días может быть первоначально введено в базу данных как días или dias. coñac может быть введено как coñac или conac.На самом деле иногда данные вводятся таким способом, а иногда другим.

Вопрос в том, есть ли способ настроить эти параметры поиска, чтобы встроенный механизм поиска офиса (Ctrl+f) находил días когда dias в комплект поставки.

Если нет, я хотел бы услышать, каков будет ваш подход к решению этой проблемы.

Это было полезно?

Решение

Соответствующее поведение диалогового окна поиска графического пользовательского интерфейса в приложениях Office не настраивается.Но если бы я был на вашем месте, вот как бы я решил проблему:

Во-первых, вам понадобится код .NET, который выполняет поиск без учета акцентов.В зависимости от того, какой язык вам больше нравится, вот пример VB и C#.Суть этого заключается в использовании CompareInfo.IndexOf метод с использованием параметра CompareOptions, для которого установлено значение CompareOptions.IgnoreNonSpace.Это поиск без учета акцента.

Далее вам нужно будет вызвать этот код из приложения Office.Способ подключения кода зависит от приложения. Например, вот сообщения в блоге, показывающие, как это сделать из Эксель и Доступ.

Затем вам нужно будет обернуть эти вызовы вокруг кода и пользовательского интерфейса, который имитирует поиск и замену.Это снова будет отличаться в каждом приложении.Например, в Excel вы просматриваете все ячейки текущего листа и ищете совпадения с помощью своего кода.

Наконец, вы захотите сопоставить этот код с кнопкой панели инструментов или другим способом вызова вашего кода.

В любом случае, надеюсь, этой информации достаточно, чтобы помочь вам начать работу.Вот основной код .NET на VB или C# для сопоставления без учета акцентов:

ВБ

Module Module1
    Sub Main()
        ' returns: 3
        Dim pos As Integer = FindIgnoreDiacritics("àcçëñt-énäblêd", "en")
    End Sub
    Function FindIgnoreDiacritics(ByVal lookIn As String, ByVal lookFor As String) As Integer
        FindIgnoreDiacritics = System.Globalization.CultureInfo.InvariantCulture.CompareInfo.IndexOf(lookIn, lookFor, System.Globalization.CompareOptions.IgnoreNonSpace Or System.Globalization.CompareOptions.IgnoreCase)
    End Function
End Module

С#

class Program
{
    static void Main(string[] args)
    {
        // returns: 3
        int pos = FindIgnoreDiacritics("àcçëñt-énäblêd", "en");
    }
    static int FindIgnoreDiacritics(string lookIn, string lookFor)
    {
        return System.Globalization.CultureInfo.InvariantCulture.CompareInfo.IndexOf(lookIn, lookFor,
            System.Globalization.CompareOptions.IgnoreNonSpace | System.Globalization.CompareOptions.IgnoreCase);
    }
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top