有時,我們可能要從一個字符串的尾部刪除指定的字符串,這在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);
當然,第二個算法必須判斷一下要刪除的字符串是否位于源字符串的尾部,否則,所得結果不準確。
新聞熱點
疑難解答