当前位置:K88软件开发文章中心编程语言.NET.NET01 → 文章内容

C#删除字符串尾部指定的子字符串

减小字体 增大字体 作者:佚名  来源:翔宇亭IT乐园  发布时间:2018-12-31 11:48:31

:2012-04-30 23:39:17

有时,我们可能要从一个字符串的尾部删除指定的字符串,这在C#中实现起来还较为方便。

其基本思想为:

(1)首先判断一下源字符串中是否包含要删除的字符串;

(2)分别计算源字符串和要删除的字符串的长度;

(3)获取源字符串中要删除字符串的位置deletePos;

(4)在源字符串的尾部deletePos位置开始截取与要删除字符串等长的字符串;

(5)比较截取的字符串与要删除的字符串是否相同;

(6)如果相同,则从源字符串中移除从deletePos位置开始的字符串

下面是具体的源代码:

        /// <summary>
        /// 从字符串中的尾部删除指定的字符串
        /// </summary>
        /// <param name="sourceString">源字符串</param>
        /// <param name="deletingString">要删除的字符串</param>
        /// <returns>删除后的字符串</returns>
        public string RemoveAtEnd(string sourceString, string deletingString)
        {
            try
            {
                if (sourceString.IndexOf(deletingString) < 0)
                    throw new Exception("原字符串中不包含要删除的字符串!");
                string tmpString = sourceString;
                int len1 = sourceString.Length;
                int len2 = deletingString.Length;
                int deletePos = len1 - len2;
                string tempSubString = sourceString.Substring(deletePos);
                if (tempSubString.ToUpper() == deletingString.ToUpper())
                {
                    tmpString = sourceString.Remove(deletePos, len2);
                }
                return tmpString;
            }
            catch
            {
                return sourceString;
            }
        }

执行效果如下图所示:

上面的算法中,如果指定要删除的字符串不再尾部,就不会执行删除操作。

实际上,还有一个较为简便的方法:

string tmpString = sourceString.SubString(0, sourceString.Length - deletingString.Length);

当然,第二个算法必须判断一下要删除的字符串是否位于源字符串的尾部,否则,所得结果不准确。


C#删除字符串尾部指定的子字符串