有没有办法确定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/