c# - 如何在C#中确定文本格式

标签 c# .net format

有没有办法确定C#/.NET中文本的格式

像这样的东西会非常有用。

public TextFormat TextTools.GetTextFormat(string text);

switch(TextTools.GetTextFormat(mystring))
{

  case TextFormat.RichText: break;
  case TextFormat.PlainText: break;

}

我在 msdn 上四处寻找,但找不到这样的工具

最佳答案

这是一个非常启发式的检查,但您可以尝试从类似这样的东西开始构建您自己的函数(当然您可以扩展它以处理不同的格式):

public static TextFormat GetFormat(string text) {
    if (text.TrimStart().StartsWith(@"{\rtf", StringComparison.Ordinal))
        return TextFormat.RichText;

    return TextFormat.PlainText;
}

更好的检查意味着您解析 RTF 文本以确保它不仅仅是看起来像 RTF 的随机字符串。因为解析可能会很长(就时间而言),所以我建议首先进行快速检查以排除所有确定不是 RTF 的内容:

public static TextFormat GetFormat(string text) {
    if (text.TrimStart().StartsWith(@"{\rtf", StringComparison.Ordinal)) {
        if (IsValidRtf(text))
            return TextFormat.RichText;
    }

    return TextFormat.PlainText;
}

在最嵌套的 if 中,您可以决定如何处理看似 RTF 但无效的文本(在本例中我只将其视为纯文本)。依赖于 RichTextBox 控件实现(然后向下到 Windows API 实现)的 IsValidRtf() 的可能的、幼稚且低效的实现可能是:

private static bool IsValidRtf(string text) {
    try {
        new RichTextBox().Rtf = text;
    }
    catch (ArgumentException) {
        return false;
    }
        
    return true;
}

关于c# - 如何在C#中确定文本格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22502924/

相关文章:

java - 安卓。如何获取音频文件格式?

c# - Microsoft.Net.Compilers 的目的是什么?

c# - SecureString "encrypted"如何仍然可用?

.net - 为 Listview 列实现一个很好的自动调整大小机制?

.net - 在 nhibernate-mapping 中设置默认值

c# - NPOI 日期格式单元格

xml - 用于格式化 XML 文件并保留空行和注释的 CLI 工具

c# - 将字典属性作为对象访问

c# - 如何使用 Entity Framework 和存储库模式获取记录数

c# - 错误 : LINQ to Entities does not recognize the method 'Int32 ToInt32