有没有办法确定C#/ .NET中的文本格式
这样的事情会非常有用.
public TextFormat TextTools.GetTextFormat(string text);
switch(TextTools.GetTextFormat(mystring))
{
case TextFormat.RichText: break;
case TextFormat.PlainText: break;
}
Run Code Online (Sandbox Code Playgroud)
我在msdn上四处寻找,但找不到这样的工具
这是一个非常启发式的检查,但你可以尝试从这样的东西开始构建自己的函数(当然你可以扩展它来处理不同的格式):
public static TextFormat GetFormat(string text) {
if (text.TrimStart().StartsWith(@"{\rtf1", StringComparison.Ordinal))
return TextFormat.RichText;
return TextFormat.PlainText;
}
Run Code Online (Sandbox Code Playgroud)
更好的检查意味着您解析RTF文本以确保它不仅仅是一个似乎是RTF 的随机字符串.因为解析可能是扩展的(就时间而言)然后我建议首先快速检查以排除所有因为肯定不是RTF:
public static TextFormat GetFormat(string text) {
if (text.TrimStart().StartsWith(@"{\rtf1", StringComparison.Ordinal)) {
if (IsValidRtf(text))
return TextFormat.RichText;
}
return TextFormat.PlainText;
}
Run Code Online (Sandbox Code Playgroud)
在最嵌套的情况下,if您可以决定如何处理看似RTF的文本,但它无效(在本例中我只是将其视为纯文本).一个可能的,天真的和低效的,实现IsValidRtf()依赖于RichTextBox控制实现(然后到Windows API实现)可能是:
private static bool IsValidRtf(string text) {
try {
new RichTextBox().Rtf = text;
}
catch (ArgumentException) {
return false;
}
return true;
}
Run Code Online (Sandbox Code Playgroud)