在字段串字段的值中,因为复制、输入不正确等原因,经常会带着空格,造成后续计算字段时发生错误,这个工具的目的是消除所有字符串字段中的空格。
一、要实现的功能
右键点击选择的要素图层,点击【清除空格】按钮,清除字符串字段中的空格,如上图所示。
二、功能代码
1、获取当前选择的图层
FeatureLayer initlayer = MapView.Active.GetSelectedLayers().FirstOrDefault() as FeatureLayer;
2、获取所选图层的所有字段,需要异步执行
var fields = await QueuedTask.Run(() =>
{
return initlayer.GetFieldDescriptions();
});
3、固定套路,打开所选图层的表格,历数所有字段,如果是字符串类型,则将其中的空格去除
await QueuedTask.Run(() =>
{
// 打开表
using (Table enterpriseTable = initlayer.GetTable())
{
using (RowCursor rowCursor = enterpriseTable.Search(null, false))
{
TableDefinition tableDefinition = enterpriseTable.GetDefinition();
while (rowCursor.MoveNext())
{
using (Row row = rowCursor.Current)
{
// 历数所有字段
foreach (var field in fields)
{
// 如果是字符串类型,则进行下一步
if (field.Type == FieldType.String)
{
var value = row[field.Name];
if (value != null)
{
// 去除空格
row[field.Name] = value.ToString().Replace(" ", "");
row.Store(); // 保存修改
}
}
}
}
}
}
// 提交编辑
Project.Current.SaveEditsAsync();
}
});
功能比较简单,代码并不长。
运行后的结果如下:
三、工程文件分享
最后,放上工程文件的链接:
ClearSpacehttps://pan.baidu.com/s/1JCUkNHFHpSvt5ZeBIwhUlw?pwd=bsx6
PS:可以直接点击...bin\Debug\net6.0-windows\下的.esriAddinX文件直接安装。