有时,我们可能要从一个字符串的尾部删除指定的字符串,这在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);
当然,第二个算法必须判断一下要删除的字符串是否位于源字符串的尾部,否则,所得结果不准确。
新闻热点
疑难解答