关于Excel操作编写的一个软件设计构思案例[连载] --如何实现从字符串中提取需要的字符并赋值给指定单元格内
2012-10-27 10:35
736 查看
如何实现从字符串中提取需要的字符并赋值给指定单元格内是本软件设计的理由和核心需求和要做的事情,工作原理很简单:读取原地址字符串从中找到指定字符,填充到指定单元格内形成十级分类,同时删除原字符串内已找到的字符,依十级字符从第一级依次执行。
上代码和分析,这一步逻辑处理较多,代码如下:其实软件设计就是把思维细化写为语句,如:怎么知道某字符属于哪级,脑中必然有预存数据提出作比较,因此,给软件设计一个存储指定各级字符,上次发布界面右上控件为处理结果、右下控件为条件设定。
以上分析直接注视在代码中了,就不再赘述,有兴趣的自己整理;提取字符是很繁琐的事情,有时遇到情况比较复杂,尤其是对不规范书写情况以上代码改之又改,以上代码直接从控件操作处理。
下面代码之所以一直保存,就是妙用所在:
下次发布:如何创建快捷菜单执行人机交互操作。由于软件急用设计,没考虑界面布局细节,况现在创建快捷菜单轻而易举。
上代码和分析,这一步逻辑处理较多,代码如下:其实软件设计就是把思维细化写为语句,如:怎么知道某字符属于哪级,脑中必然有预存数据提出作比较,因此,给软件设计一个存储指定各级字符,上次发布界面右上控件为处理结果、右下控件为条件设定。
private void 提取数据自动处理(int 总数据量) { 定位 = 处理结果.CurrentCellAddress.Y; this.Invoke(new Action(delegate() { string 字符 = "", 条件字符 = "", 等效字符 = "0123456789-—_一二三四五六七八九十百千万亿0123456789零壹贰叁肆伍陆柒捌玖"; for (int 总行 = 0; 总行 < 总数据量; 总行++)/*循环已读取地址字符串总数据量,数值将在快捷菜单中传递,稍后发布如何创建快捷菜单进行人机交互操作,本软件没任何按钮*/ { 字符 = 处理结果.Rows[总行].Cells[11].Value.ToString();/*从控件读取原导入地址字符串*/ 处理结果.Invoke(new Action(delegate() { 处理结果.CurrentCell = 处理结果.Rows[总行].Cells[处理结果.CurrentCellAddress.X]; }));/*同时使控件随读取行数定位选中单元格而滚动让人知道程序工作进度*/ for (int 列 = 0, 量 = 条件设定.ColumnCount - 1; 列 < 量; 列++)/*从列开始依次执行*/ { bool 全无 = false; for (int 行 = 0, 数 = 条件设定.RowCount - 1; 行 < 数; 行++)/*各列的行依次执行*/ { 条件字符 = 条件设定.Rows[行].Cells[列].Value.ToString(); if (条件字符 == "") continue;/*由于各列存储条件设定字符数量不同,又采取了自动去重复和按降序排序技术,所以,当循环列中各行时,对存储量少的执行这个处理*/ if (条件字符 == "/") 处理结果.Rows[总行].Cells[列 + 1].Value = "/"; if (列 == 8)/*对这列执行特别处理,从剩余字符串中提取数值字符,另加指定字符如:号、#、楼、室、层、幢、栋......*/ { if (字符.Length > 0) {/*呵呵,由于急着使用这里没做优化,[等效提取]这个就是回复友人评论说的另有妙用所在*/ if (等效提取(字符, 等效字符) == "") 处理结果.Rows[总行].Cells[列 + 1].Value = "/"; else 处理结果.Rows[总行].Cells[列 + 1].Value = 等效提取(字符, 等效字符) + 条件字符; } else 处理结果.Rows[总行].Cells[列 + 1].Value = "/"; } else {/*这里处理提取数值,在条件设定中使用特定提取字符如:?组、?队;如字符串中存在某村某组、某队*/ if (条件字符.Contains("?") || 条件字符.Contains("?")) { string 特殊处理 = 条件字符.Replace("?", "").Replace("?", ""); if (字符.Contains(特殊处理)) {/*可优化,如果语句出现重复则可归纳进行优化,尤其是影响效率的函数执行或操作控件*/ 处理结果.Rows[总行].Cells[列 + 1].Value = 处理结果.Rows[总行].Cells[列 + 1].Value.ToString().Replace("/", "") + 等效提取(字符.Substring(0, 字符.IndexOf(特殊处理) + 特殊处理.Length), 等效字符 + 特殊处理); 字符 = 字符.Substring(字符.IndexOf(特殊处理) + 特殊处理.Length); 全无 = true; } } if (字符.Contains(条件字符))/*常规提取处理*/ {/*可优化*/ if (处理结果.Rows[总行].Cells[列 + 1].Value.ToString().Replace("/", "") != 条件字符) 处理结果.Rows[总行].Cells[列 + 1].Value = 处理结果.Rows[总行].Cells[列 + 1].Value.ToString().Replace("/", "") + 条件字符; 字符 = 字符.Substring(字符.IndexOf(条件字符) + 条件字符.Length); 全无 = true; } if (!全无) 处理结果.Rows[总行].Cells[列 + 1].Value = "/"; } } } if(总行 == 总数据量 - 1) MessageBox.Show("提取数据完成!" + 总数据量.ToString() + "行数据。", "友情提示!"); } 主体快捷菜单.Items[5].Enabled = true; 处理结果.Invoke(new Action(delegate() { 处理结果.CurrentCell = 处理结果.Rows[定位].Cells[处理结果.CurrentCellAddress.X]; }));/*特别是如果第二次执行时,定位上次查看或处理选中的所在行和列,使软件使用人接着上次处理工作*/ })); }
以上分析直接注视在代码中了,就不再赘述,有兴趣的自己整理;提取字符是很繁琐的事情,有时遇到情况比较复杂,尤其是对不规范书写情况以上代码改之又改,以上代码直接从控件操作处理。
下面代码之所以一直保存,就是妙用所在:
public string 等效提取(string 转换内容, string 指定内容) { string 等效 = ""; try { for (int 字符 = 0; 字符 < 转换内容.Length; 字符++) { int 位置 = 指定内容.IndexOf(转换内容.Substring(字符, 1)); if (位置 >= 0) 等效 += 指定内容.Substring(位置, 1); 转换内容 = 转换内容.Replace("--", "-").Replace("—", "-").Replace("——", "-").Replace("_", "-"); } } catch (Exception Ts) { 等效 = "浤济类.内容等效:非法->" + Ts.ToString(); } return 等效; }
下次发布:如何创建快捷菜单执行人机交互操作。由于软件急用设计,没考虑界面布局细节,况现在创建快捷菜单轻而易举。
相关文章推荐
- 关于Excel操作编写的一个软件设计构思案例[连载] --如何打开Excel文件,获取需要列的数据显示到表格内做修改
- 关于Excel操作编写的一个软件设计构思案例[连载] --如何创建快捷菜单执行人机交互操作、软件初始化设置
- 关于Excel操作编写的一个软件设计构思案例[连载] --如何把处理好后的数据导出Excel文件中(含背景\字体颜色设置)
- 关于Excel操作编写的一个软件设计构思案例[连载] --辅助功能:补全缺少数据、树定位、文本读与保存
- 关于Excel操作编写的一个软件设计构思案例[连载]
- 关于Excel操作编写的一个软件设计构思案例[连载] --保存条件设定的另一种方式:更新与插入方法
- //4. 编写一个函数reverse_string(char * string)(递归实现) //实现:将参数字符串中的字符反向排列。 //要求:不能使用C函数库中的字符串操作函数。
- Visual Studio 2017中使用正则修改部分内容 如何使用ILAsm与ILDasm修改.Net exe(dll)文件 C#学习-图解教程(1):格式化数字字符串 小程序开发之图片转Base64(C#、.Net) jquery遍历table为每一个单元格取值及赋值 。net加密解密相关方法 .net关于坐标之间一些简单操作
- 编写一个函数reverse_string(char * string)(递归实现)实现:将参数字符串中的字符反向排列。要求:不能使用C函数库中的字符串操作函数。
- 编写一个函数reverse_string(char * string)(递归实现) 实现:将参数字符串中的字符反向排列。 要求:不能使用C函数库中 的字符串操作函数。
- 编写一个函数reverse_string(char * string) 实现:将参数字符串中的字符反向排列。 要求:不能使用C函数库中的字符串操作函数
- 编写一个函数reverse_string(char * string) 实现:将参数字符串中的字符反向排列。 要求:不能使用C函数库中的字符串操作函数。
- C语言 编写一个函数reverse_string(char * string) 实现:将参数字符串中的字符反向排列。 要求:不能使用C函数库中的字符串操作函数。
- 编写一个方法用于验证指定的字符串是否为反转字符,返回true和false。请用递归算法实现
- 【c语言】编写一个函数reverse_string(char * string) 实现:将参数字符串中的字符反向排列。 要求:不能使用C函数库中的字符串操作函数
- 【C语言】编写一个函数reverse_string(char * string)(递归实现),将参数字符串中的字符反向排列,不能使用C函数库中的字符串操作函数。
- 【C语言】编写一个函数reverse_string(char * string) 实现:将参数字符串中的字符反向排列。要求:不能使用C函数库中的字符串操作函数。
- 编写一个函数(递归实现) 实现:将参数字符串中的字符反向排列。
- 利用C实现:编写一个函数,它从一个字符串中提取一个子字符串。
- 编写一个函数reverse_string(char * string)(递归实现) 实现:将参数字符串中的字符反向排列。