• C# 去除字符串首尾字符或字符串


         

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

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

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

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

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

     ///<summary>
    
     /// 移除前缀字符串
    
      ///</summary>
    
    ///<param name="val">原字符串</param>
    
    ///<param name="str">前缀字符串</param>
    
     ///<returns></returns>
    
    private string GetRemovePrefixString(string val, string str)
    
    {
    
        string strRegex = @"^(" + str + ")";
    
        return Regex.Replace(val, strRegex, "");
    
     }
    
     ///<summary>
    
     /// 移除后缀字符串
    
     ///</summary>
    
     ///<param name="val">原字符串</param>
    
     ///<param name="str">后缀字符串</param>
    
     ///<returns></returns>
    
     private string GetRemoveSuffixString(string val, string str)
    
     {
        string strRegex = @"(" + str + ")" + "$";
    
        return Regex.Replace(val, strRegex, "");
     }

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

    ///<summary>
    
    /// 截前后字符串
    
    ///</summary>
    
     ///<param name="val">原字符串</param>
    
    ///<param name="str">要截掉的字符串</param>
    
    ///<param name="bAllStr">是否对整个字符串进行截取
    
    ///如果为true则对整个字符串中匹配的进行截取
    
    ///如果为false则只截取前缀或者后缀</param>
    
    ///<returns></returns>
    
    private string GetString(string val, string str, bool bAllStr)
    
    {
    
        return Regex.Replace(val, @"(^(" + str + ")" + (bAllStr ? "*" : "") + "|(" + str + ")" + (bAllStr ? "*" : "") + "$)", "");
    
    }

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

    /// <summary>
    
    /// 截前后字符
    
    /// </summary>
    
    /// <param name="val">原字符串</param>
    
    /// <param name="c">要截取的字符</param>
    
    /// <returns></returns>
    
    private string GetString(string val, char c)
    
    {
    
        return val.TrimStart(c).TrimEnd(c);
    
     }

    以上动图由“图斗罗”提供

  • 相关阅读:
    java中的锁
    如何解决ORA-12547: TNS:lost contact错
    MVC Json 回报
    热12应建议网站模板(免费下载点)
    python爬行动物集合360联想词搜索
    Cocos2d-x 3.1.1 学习日志8--2分钟让你知道cocos2d-x3.1.1 文本类别
    两个堆栈实现一个队列和一叠两个队列实现【算法导论课后题】
    Android获得Manifest在&lt;meta-data&gt;元件的值
    40地点40投资者接下来的几年
    【编程之美】java二进制实现重建
  • 原文地址:https://www.cnblogs.com/ldyblogs/p/Regex.html
Copyright © 2020-2023  润新知