RegularExpressionAttribute等效于SymbolUtilityServices.ValidateSymbolName

时间:2018-02-11 19:18:41

标签: c# autocad-plugin

在AutoCAD中,有一个实用程序,用于确定字符串是否对符号名称有效,例如,块名称或图层名称。该实用程序是:

$now=date('Y-m-d H:i:s');

... 

->select("*")
->from('sales')
->where('return_date <=', $now)
->where_not_in('id',"(SELECT sale_Id FROM sales where sale_id IS NOT NULL)")

其中“s”是您正在测试的字符串。

请参阅How to check if a given string is a valid name for an item in a symbol table?

由于此工具在名称不合规时抛出异常,我更倾向于使用Regex属性来执行相同操作,例如:

try
{
    // Validate the provided symbol table name
    SymbolUtilityServices.ValidateSymbolName(s, false);
    System.Windows.Forms.MessageBox.Show(s + " is a valid name.");
}
catch
{
    // An exception has been thrown, indicating that
    //    the name is invalid
    System.Windows.Forms.MessageBox.Show(s + " is an invalid name.");
}

但这就是我的问题,我不熟悉正则表达式。那么表达式将禁止这些字符:

\&LT;&GT; /“:; * |,=`

(允许空格)

Unsupported characters in block name

感谢您的想法和帮助。 马特

1 个答案:

答案 0 :(得分:0)

这个表达式:

[RegularExpressionAttribute(@"^[a-zA-Z \d_-]+$", ErrorMessage = "Certain special characters not allowed")] 

似乎做了伎俩,我把它放在一起,但我觉得它没有明确地禁止字符,相反,它只允许某些字符。

如果有更简洁的答案,我会接受它。