在做一个属性入库的功能,将Excel属性数据导入到图层要素当中,这里Excel和SDE数据库数据存在一个关联字段,通过关联字段值进行匹配属性入库。

      在实际业务中,由于普查数据往往某些字段值比较复杂,在写入到图层中时用户可能做一些简化,例如一个要素编号为0532BH001,可能录入到图层中只录入BH001,这样就导致了图层要素和Excel文件关联字段的值并不一定是完全相等的,可能存在一定的匹配关系。

      这里不考虑复杂的情况,只是考虑Excel中关联字段值是要素关联字段值加前缀、后缀或者前后缀都存在的情况。

      因为是以Excel作为基准来循环的,构造好字段值后再图层中进行Query操作查找到相应的要素,所以不能通过在图层要素关联字段中取出字段值然后通过连接前后缀的方式来判断处理,只能通过对Excel中关联字段值进行截取的方式来处理。

      根据这里的实际情况,格式比较固定,移除前缀、后缀函数如下所示:

   1: ///<summary>

   2: /// 移除前缀字符串

   3: ///</summary>

   4: ///<param name="val">原字符串</param>

   5: ///<param name="str">前缀字符串</param>

   6: ///<returns></returns>

   7: private string GetRemovePrefixString(string val, string str)

   8: {

   9:     string strRegex = @"^(" + str + ")";

  10:     return Regex.Replace(val, strRegex, "");

  11: }

  12: ///<summary>

  13: /// 移除后缀字符串

  14: ///</summary>

  15: ///<param name="val">原字符串</param>

  16: ///<param name="str">后缀字符串</param>

  17: ///<returns></returns>

  18: private string GetRemoveSuffixString(string val, string str)

  19: {

  20:     string strRegex = @"(" + str + ")" + "$";

  21:     return Regex.Replace(val, strRegex, "");

  22: }

      延伸,如果对于字符串要求不如此严格,只是单纯的截取前后字符串,那么可以通过此种方式进行:

   1: ///<summary>

   2: /// 截前后字符串

   3: ///</summary>

   4: ///<param name="val">原字符串</param>

   5: ///<param name="str">要截掉的字符串</param>

   6: ///<param name="bAllStr">是否对整个字符串进行截取

   7: ///如果为true则对整个字符串中匹配的进行截取

   8: ///如果为false则只截取前缀或者后缀</param>

   9: ///<returns></returns>

  10: private string GetString(string val, string str, bool bAllStr)

  11: {

  12:     return Regex.Replace(val, @"(^(" + str + ")" + (bAllStr ? "*" : "") + "|(" + str + ")" + (bAllStr ? "*" : "") + "$)", "");

  13: }

      如果是截取单个字符而不是字符串,可以通过TrimStart或者TrimEnd函数来处理:

   1: /// <summary>

   2: /// 截前后字符

   3: /// </summary>

   4: /// <param name="val">原字符串</param>

   5: /// <param name="c">要截取的字符</param>

   6: /// <returns></returns>

   7: private string GetString(string val, char c)

   8: {

   9:     return val.TrimStart(c).TrimEnd(c);

  10: }

C# 去除字符串首尾字符或字符串的更多相关文章

  1. c语言指针字符串与字符数组字符串的区别

    #include <stdio.h> int main() { //字符串常量,存放于内存常量区. //常量区区的内存具有缓存机制, //当不同指针指向的常量值相同时, //其实这些指针指 ...

  2. 字符类型char、字符串与字符数组、字符数组与数据数组区别

    字符类型是以ASCII码值运算的:小写字母比相应的大写字母大32,其中A=65,a=97 Esc键 27(十进制).'\x1B'(十六进制).'\33'(八进制) 转义字符:\0 空字符     AS ...

  3. PHP只显示姓名首尾字符,隐藏中间字符并用*替换

    //测试时文件的编码方式要是UTF8 $str='中文a字1符'; echo strlen($str).'<br>';//14 echo mb_strlen($str,'utf8').'& ...

  4. [c/c++] programming之路(22)、字符串(三)——字符串封装

    项目结构 头文件.h #include<stdio.h> #include<stdlib.h> #include<string.h> //字符串封装,需要库函数 / ...

  5. JavaScript trim 实现(去除字符串首尾指定字符)

    String.prototype.trim = function (char, type) { if (char) { if (type == 'left') { return this.replac ...

  6. JavaScript trim 实现去除字符串首尾指定字符的简单方法

    String.prototype.trim = function (char, type) { if (char) { if (type == 'left') { return this.replac ...

  7. 【iOS】去除字符串首尾空格或某字符

    在iOS的实际开发中,常会出现需要去除空格的情况,总结有三种情况: 去除字符串首尾连续字符(如空格): 去除字符串首部连续字符(如空格): 去除字符串尾部连续字符(如空格): 去除字符串首尾连续字符( ...

  8. 【Python实践-4】切片操作去除字符串首尾的空格

    #利用切片操作,实现一个trim()函数,去除字符串首尾的空格,注意不要调用str的strip()方法 def trim(s): while s[0:1]==' ': s=s[1:] while s[ ...

  9. C++ 去掉字符串首尾的 \x20 \r \n 字符

    转载:http://www.sharejs.com/codes/cpp/5780 /* 去掉字符串首尾的 \x20 \r \n 字符 by sincoder */ void clean_string( ...

随机推荐

  1. Asynchronous javascript and xml

    关于Ajax,学习了原生的ajax和JQ的ajax,如今,它已是无处不在,首先,我们知道开发或者使用的软件分为c/s和b/s两种,分别是客户端/服务端和浏览器端/服务端. 前者的优点是响应速度快,但是 ...

  2. Asp.net core 通过Models 生成数据库的方法

        其实Getting Started当中有着详细的说明,https://docs.efproject.net/en/latest/platforms/aspnetcore/new-db.html ...

  3. Linux常见疑难问答

    Linux常见疑难问答 (1)按a~z顺序排列启动服务进程. #exportLC_ALL=C           #英文环境变量设置,主要用于解决乱码问题 #chkconfig –list | gre ...

  4. Linux CentOS 7通过yum命令安装Mono4.0.1

    前言 上一篇中提到的快照方式安装Mono,该方式并不稳定,需要做各种配置,各种修改才能与jexus搭配运行. 一.安装源 rpm --import "http://keyserver.ubu ...

  5. C++ 随机数

    #include <iostream> #include <stdlib.h> #include <time.h> #define random(a,b) (ran ...

  6. bash profile .bashrc

    /etc/profile:此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行. 并从/etc/profile.d目录的配置文件中搜集shell的设置. /etc/bashrc:为每一 ...

  7. jQuery利用JSON数据动态生成表格

    <style type="text/css"> table.gridtable { font-family: verdana,arial,sans-serif; fon ...

  8. stringbuffer和stringbuilder

    StringBuffer是线程安全的可变字符序列.长度可变,类型任意,最终都要转换为字符串存储.是一个字符串缓冲区,是一个容器.用于临时存储数据.不过StringBuffer缓冲区内部是由数组来存储的 ...

  9. 获取iPhone 联系人列表,并且根据分析得到的姓名首字母进行排序

    获取手机联系人以iOS9为分界点,大家都知道到了iOS9很多方法都更新了,好多接口都弃用,被新的接口代替.这Demo种有新旧两个接口,使用前判断当前iOS版本. 下面是Demo连接地址:Github的 ...

  10. MongoDB服务重启及后台运行解决方法

    1 在MongoDB 安装目录下 新建一个test文件夹 mkdir /test 2 切换到MongoDB的安装目录(可通过 find -name 'mongod'命令查找安装目录)下 执行: bin ...