【问题标题】:How to Change value From Persian Culture to English [duplicate]如何将价值从波斯文化更改为英语 [重复]
【发布时间】:2013-01-22 13:17:40
【问题描述】:

我有一个带有波斯文化数字的变量,如下所示:
字符串值="10۳۶۷۵۱";
我想将此数字转换为英文版本并再次将其保存在我的字符串中,如下所示
值="1036751";

请帮帮我,我该怎么做 如果我可以使用像文化信息这样的简单方法而不是 switch case

【问题讨论】:

  • 虽然答案中已经提到了您可以使用的一些工具,但您可能想澄清一下您的意思是不是文档中的目录——它们可能难以识别——或者单独显示的书签——易于识别和提取。

标签: c# cultureinfo culture string-parsing persian


【解决方案1】:

您可以使用Windows.Globalization.NumberFormatting.DecimalFormatter 类来解析字符串。这将解析任何支持的数字系统中的字符串(只要它是内部连贯的)。

【讨论】:

    【解决方案2】:

    您可以使用多种工具来做到这一点。 iTextPdfSharp 可能会做到这一点。这相当于打开文档并在目录中浏览包含书签的树。他们的代码运行良好,但请务必下载规范,以便您了解树的结构。我使用的是 Acrobat 的原始版本,我的许多工程师同事觉得书签树有点过于复杂。

    BitMiracle 提供了类似的代码。他们经常在 Stack Overflow 上巡逻,因此您也可能会看到他们的回答(嗨!) - 您可以看到他们的工作示例 here 用于创作书签。

    如果你愿意付钱,这很容易使用Atalasoft 的DotPdf(免责声明:我在 Atalasoft 工作,几乎所有的 DotPdf 都写过)。在我们的 API 中,我们尝试尽可能隐藏结构的复杂性(例如,如果您想迭代在单击书签时采取的一系列动作链,它是 foreach 而不是 tree walk)并且我们'已将书签树包装到标准 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);
        }
    }
    

    【讨论】:

      【解决方案3】:

      PDF 可以包含至少三种不同的东西,可以称为“目录”:

      1. 文档大纲(书签),一组特定的 PDF 结构
      2. 文档开头的超链接列表。每个超链接都指向文档所在的位置
      3. 文本字符串列表,其中每个字符串命名文档的一部分,并且可以选择指定该部分从哪个页面开始。

      我不知道第三种情况的任何开箱即用或易于实施的解决方案。其他情况更简单。

      对于第一种情况,几乎所有 PDF 库都可以。 @plinth(嗨!)针对这种情况至少提供了两种解决方案。

      对于第二种情况,可以使用Docotic.Pdf library 实施解决方案。基本上,您可以尝试:

      • 枚举文档中的所有链接
      • 找到所有彼此接近的链接(您需要建立一些启发式方法来将什么视为“接近”)
      • 从找到的链接中检索文本

      如果您的案例是“超链接列表”,那么Extract text from link target 示例可能会为您提供一些开始的线索。

      免责声明:我为 Docotic.Pdf 库的供应商 Bit Miracle 工作。

      【讨论】:

      • #3 可以通过文本提取的语义分析来完成。这很重要,但有一些启发式方法可以更容易地将章节标题分类为文档内容。嗨,博布罗夫斯基!
      • 您对目录类型的描述非常有帮助,非常感谢
      【解决方案4】:

      您需要使用 pdflib 之类的 pdf 库才能阅读 pdf 文件 (http://www.pdflib.com/)。这应该可以解决问题,祝你好运!

      【讨论】:

      • 我正在使用 aspose..但我不知道它是如何工作的
      猜你喜欢
      • 2023-03-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多