Как изменить значение с персидской культуры на английский

у меня есть переменная с цифрами персидской культуры, например:
string Value="۱۰۳۶۷۵۱";
я хочу преобразовать эти цифры в английскую версию и снова сохранить их в своей строке, например
Value="1036751";

пожалуйста, помогите мне, как я могу это сделать, если я могу использовать простой способ, например, информацию о культуре вместо регистра переключения


person Amin AmiriDarban    schedule 22.01.2013    source источник
comment
Хотя некоторые инструменты, которые вы можете использовать, уже упоминались в ответах, вы можете уточнить, имеете ли вы в виду какое-то оглавление в документе --- их может быть трудно распознать --- или закладки, отображаемые отдельно --- которые легко распознаются и извлекаются.   -  person mkl    schedule 22.01.2013


Ответы (4)


Вы можете использовать Windows.Globalization.NumberFormatting .DecimalFormatter для анализа строки. Это будет анализировать строки в любой из поддерживаемых систем счисления (при условии, что они внутренне согласованы).

person Eric MSFT    schedule 24.09.2013

Вы можете сделать это с помощью ряда инструментов. iTextPdfSharp, скорее всего, сможет это сделать. Это будет равнозначно открытию документа и просмотру дерева в каталоге, в котором есть закладки. Их код работает нормально, но обязательно скачайте спецификацию, чтобы понять структуру дерева. Я работал с оригинальной версией Acrobat, и многие мои коллеги-инженеры считали дерево закладок слишком сложным.

BitMiracle предлагает аналогичный код. Они регулярно патрулируют переполнение стека, так что вы тоже можете получить от них ответ (привет!) — вы можете увидеть образец их работы здесь для создания закладок.

Если вы готовы платить деньги, это легко сделать с помощью Atalasoft DotPdf (отказ от ответственности: я работаю в Atalasoft и написал почти весь DotPdf). В нашем API мы пытаемся скрыть сложность структуры, где это возможно (например, если вы хотите повторить цепочку цепочек действий, предпринимаемых при нажатии на закладку, это foreach вместо обхода дерева), и мы мы обернули дерево закладок в стандартные List<T> коллекции.

public void WalkBookmarks(Stream pdf)
{
    // open the doc
    PdfDocument doc = new PdfDocument(pdf);
    if (doc.BookmarkTree != null)
    {
         // walk the list of top level bookmarks
         WalkBookmarks(doc.BookmarkTree.Bookmarks, 0);
    }
}

public void WalkBookmarks(PdfBookmarkList list, int depth)
{
    if (list == null) return;
    foreach (PdfBookmark bookmark in list)
    {
        // indent to the depth of the list and write the Text
        // you can also get the color, basic font styling and
        // the action associated with the bookmark
        for (i = 0; i < depth; i++) Console.Write("  ");
        Console.Writeline(bookmark.Text);
        // recurse on any children
        WalkBookmarks(bookmark.Children, depth + 1);
    }
}
person plinth    schedule 22.01.2013

PDF-файлы могут содержать как минимум три разных элемента, которые можно назвать оглавлением:

  1. Структура документа (закладки), набор определенных структур PDF
  2. Список гиперссылок в начале документа. Каждая гиперссылка ведет на место в документе
  3. Список текстовых строк, где каждая строка называет часть документа и, при необходимости, указывает, на какой странице эта часть начинается.

О каких-то готовых или простых в реализации решениях для третьего случая я не знаю. Остальные случаи проще.

В первом случае подойдет практически любая библиотека PDF. @plinth (привет!) дал как минимум два решения для такого случая.

Во втором случае решение может быть реализовано с помощью библиотеки Docotic.Pdf. В принципе, вы можете попробовать:

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

Если ваш случай представляет собой список гиперссылок, то Извлечь текст из link target может дать вам некоторые подсказки для начала.

Отказ от ответственности: я работаю в Bit Miracle, поставщике библиотеки Docotic.Pdf.

person Bobrovsky    schedule 22.01.2013
comment
№ 3 можно выполнить с помощью семантического анализа извлечения текста. Это нетривиально, но есть некоторые эвристики, облегчающие классификацию заголовков разделов как содержимого документа. Привет Бобровский! - person plinth; 23.01.2013
comment
Ваше описание о содержании очень помогло, большое спасибо - person Amin AmiriDarban; 23.01.2013

Вам нужно будет использовать pdf-библиотеку, такую ​​как pdflib, чтобы читать pdf-файлы (http://www.pdflib.com/). Это должно сработать, удачи!

person user1583384    schedule 22.01.2013
comment
я использую aspose.. но я не знаю, как это работает - person Amin AmiriDarban; 23.01.2013