從字符串的開頭刪除幾個字符的最佳方法是什麼?從字符串中刪除前面的字符?
sName = "IMG: Testing again"
sName = "TXT: This is amazing"
所以刪除IMG:和TXT ..等等
所以我可以有這個?
sName = "Testing again"
sName = "This is amazing"
從字符串的開頭刪除幾個字符的最佳方法是什麼?從字符串中刪除前面的字符?
sName = "IMG: Testing again"
sName = "TXT: This is amazing"
所以刪除IMG:和TXT ..等等
所以我可以有這個?
sName = "Testing again"
sName = "This is amazing"
那麼,如果它總是四個字符,你可以做。 sName = sName.Substring(5)
假設你一直使用的格式{TYPE}: {Text}
,並且希望{Text}
,使用此:
int index = sName.IndexOf(':') + 2; // two: one for the colon and one for the space
sName = sName.Substring(index);
這可以,當然,被放入一個線;爲了清晰起見,我將它分成兩部分。
您也可以在一般的情況下擴展方法:
public static string SubstringAfter(this string str, string sequence)
{
int index = str.IndexOf(sequence);
if (index > -1)
{
return str.Substring(str.IndexOf(sequence) + sequence.Length);
}
return str;
}
這可以讓你做到這一點:
sName = sName.SubstringAfter(": ");
sName = sName.Remove(0,5); //simple but not perfect way
編輯:
sName= sName.Split(':')[1]; //For splitting by ':'
sName = sName.Remove(0,1); //For the space, or use sName.Trim();
這隻會刪除前3個字符,在給出用戶想要刪除前5個字符(包括空格)的示例中。 –
我編輯它,根據您的評論;) – Krekkon
我個人像一個簡單的regular expression這樣的任務。
var result = Regex.Replace(input, @"^[A-Z]+:\s*", "");
這比什麼它會刪除其它提示的方法略有不同的語義,所以這裏的比賽進行了說明(也指regular expression quick reference)。
^ # anchor match to start of input
[A-Z]+ # match one or more capital English-alphabet characters
: # match a colon
\s* # match zero or more spaces
因此這種做法也符合輸入類似「HELLOWORLDILOVEYOU:弗雷德說」和「TXT: 武漢理工大學?」甩掉多餘的前導空格。
@zimdanen除了沒有 - [我沒有解決nqueens](http://www.perlmonks.org/?node_id=297616);) – user2864740
yikes,看起來很有趣。 – zimdanen
@zimdanen我甚至無法理解作者是如何開始瘋狂的!我同意正則表達式可以被過度使用,並且我已經看到了一些糟糕的錯誤。如果1)沒有更合適的現有解析工具,我通常會感到安全; 2)我可以將正則表達式構造放在一行上; 3)我可以在第二天瞭解它,而無需參考筆記。 – user2864740
我建議你去拆分,如果它的固定格式。看代碼。分裂後的第一個索引將有你的物品。
var sName = sName.Split(new char[] {':'})[1].Trim();
你可以使用
sName = sName.SubString(4, sname.Length)
它將從第四位到字符串的最後一個位置的子字符串。
你有什麼試過? [如何提問](http://stackoverflow.com/questions/how-to-ask) – crashmstr
你有一個要刪除的前綴列表? – Steve
你真的應該嘗試使用谷歌搜索它,這種問題之前已被問過一百萬次,不應再次在這裏問。 –