我可以有兩個字符串行的情況。C#以優雅的方式拆分字符串
string mystring = "/aaa/bbb/ccc/ddd/eee"
和
string mystring2 = "aaa/bbb/ccc/ddd/eeee/";
我當然可以通過「/」使用拆分,並做一些檢查,但我找了一些優雅的解決方案。
如果我做mystring.Split('/')它可以在數組的第二或第三位置,我怎麼知道它在哪裏?
如何獲得'ccc'?
謝謝!
我可以有兩個字符串行的情況。C#以優雅的方式拆分字符串
string mystring = "/aaa/bbb/ccc/ddd/eee"
和
string mystring2 = "aaa/bbb/ccc/ddd/eeee/";
我當然可以通過「/」使用拆分,並做一些檢查,但我找了一些優雅的解決方案。
如果我做mystring.Split('/')它可以在數組的第二或第三位置,我怎麼知道它在哪裏?
如何獲得'ccc'?
謝謝!
你可以這樣做:
string mystring = "/aaa/bbb/ccc/ddd/eee";
string mystring2 = "aaa/bbb/ccc/ddd/eeee/";
string[] result = mystring.Trim({'/'}).Split('/');
string[] result2 = mystring2.Trim({'/'}).Split('/');
然後,result
和result2
將是相同的。
什麼比String.Split方法更優雅?它接受分隔符並吐出一個拆分字符串的數組。
如果我做mystring.Split('/')它可以在數組的第二或第三位置,我怎麼知道它在哪裏? – 2012-03-07 15:04:09
你的問題不是很清楚,但是我會在黑暗中進行刺探,並假設你想忽略輸入字符串開始和結尾的斜線所產生的空條目。
在這種情況下,你可以嘗試:
String.Split(new string[] {"/"}, StringSplitOptions.RemoveEmptyEntries)
通過對OP問題的解釋,這似乎是最乾淨的解決方案。 – Christoffer 2012-03-07 15:09:02
優雅與否,你仍然可以使用Split
和檢查,這似乎是這個問題的條件:它以斜線開頭或不?
string[] split = mystring.Split("/");
if (mystring.StartsWith("/"))
// index = 3;
else
// index = 2;
您可以檢查結果的長度,只返回相關的結果。
var split = mystring.Split('/').Where(p => p.Length > 0).ToArray();
var split2 = mystring2.Split('/').Where(p => p.Length > 0).ToArray();
這會爲這兩個字符串生成相同的結果。
然後,如果您需要確定陣列中的位置,則可以簡單地執行以下操作。
int position = Array.IndexOf(split, "ccc"); // Returns 2
int position2 = Array.IndexOf(split2, "ccc"); // Returns 2
最後確認你有,你可以做這樣的事情正確的位置/索引:
string string1 = split[position];
string string2 = split2[position2];
定義優雅的解決方案 – MilkyWayJoe 2012-03-07 15:02:01
什麼是錯的'string.split()'? – 2012-03-07 15:02:51
爲什麼你需要拆分,你需要檢查什麼? – Kaf 2012-03-07 15:04:06