有時(shí),我們可能要從一個(gè)字符串的尾部刪除指定的字符串,這在C#中實(shí)現(xiàn)起來還較為方便。
其基本思想為:
(1)首先判斷一下源字符串中是否包含要?jiǎng)h除的字符串;
(2)分別計(jì)算源字符串和要?jiǎng)h除的字符串的長度;
(3)獲取源字符串中要?jiǎng)h除字符串的位置deletePos;
(4)在源字符串的尾部deletePos位置開始截取與要?jiǎng)h除字符串等長的字符串;
(5)比較截取的字符串與要?jiǎng)h除的字符串是否相同;
(6)如果相同,則從源字符串中移除從deletePos位置開始的字符串
下面是具體的源代碼:
/// <summary>
/// 從字符串中的尾部刪除指定的字符串
/// </summary>
/// <param name="sourceString">源字符串</param>
/// <param name="deletingString">要?jiǎng)h除的字符串</param>
/// <returns>刪除后的字符串</returns>
public string RemoveAtEnd(string sourceString, string deletingString)
{
try
{
if (sourceString.IndexOf(deletingString) < 0)
throw new Exception("原字符串中不包含要?jiǎng)h除的字符串!");
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;
}
}
執(zhí)行效果如下圖所示:

上面的算法中,如果指定要?jiǎng)h除的字符串不再尾部,就不會(huì)執(zhí)行刪除操作。
實(shí)際上,還有一個(gè)較為簡便的方法:
string tmpString = sourceString.SubString(0, sourceString.Length - deletingString.Length);
當(dāng)然,第二個(gè)算法必須判斷一下要?jiǎng)h除的字符串是否位于源字符串的尾部,否則,所得結(jié)果不準(zhǔn)確。
新聞熱點(diǎn)
疑難解答