修剪串
回答
int beginidx = haystack.IndexOf('{');
string needle = haystack.SubString(beginidx,
haystack.IndexOf('}') - beginidx + 1).Trim();
改爲'乾草堆。IndextOf('{')'和'haystack.IndexOf('}',beginidx + 1)',這將是毫無疑問的最佳解決方案。 – SimpleVar 2012-07-28 17:07:08
@YoryeNathan我的第一個答案使用雙引號作爲參數,但更改爲單引號(無編譯器),感謝編輯。 – xandercoded 2012-07-28 17:11:29
您可以使用正則表達式:
\{\s*(.*)\s*\}
所需的字符串將在第一個捕獲的組中(Match.Groups[1]
)。
實施例:
正如所指出的,正則表達式是比普通字符串操作速度較慢。如果性能問題,並且字符串提取處於緊密的循環中,那麼使用優化的方法可能會更好。否則,正則表達式與字符串是恕我直言的個人喜好的問題。
string result = Regex.Match("ListViewSubItem: {Debian6/Debian6.vmx }", @"(?<={)(.+?)(?=})").Value;
正則表達式不會最高效 – SimpleVar 2012-07-28 17:03:49
我會想你沒生成字符串自己。所以問題是,爲什麼要解析它?這看起來像是你應該退後一步,想想你想要解決什麼問題,以及如果另一種方法可能更清潔。
我對ListViewSubItem
類不熟悉,但似乎您有其中之一,並且您已對其調用ToString()
。現在,您正在解析ToString()
的輸出以查看您的子項目所代表的模型對象。
這是不是似乎倒退給你?也許你應該處理ListViewSubItem
對象本身(從簡要介紹一下文檔,你想要的屬性似乎是Text
屬性),而不是擺脫ToString()
返回的東西,這看起來很不穩定,並且取決於該類的ToString()
方法的實現(雖然可能不會,但從理論上講,從發佈到發佈可能會有所不同)。更不用說像「如果字符串包含}
字符會怎麼樣?」
由於其他原因,作爲一般規則,我認爲當數據源一直在內存中時,您不應該處理序列化。
因此,總的來說,如果你有這樣的事情:
ListViewSubItem item = /* ... */;
string s = item.ToString();
// TODO: parse {Debian} out of ListViewSubItem {Debian}
爲什麼不這樣,而不是:
ListViewSubItem item = /* ... */;
string OS = item.Text;
- 1. 修剪掉串
- 2. 修剪字符串
- 3. 修剪字符串
- 4. 修剪字符串
- 5. 修剪字符串
- 6. 完全修剪字符串
- 7. 修剪字符串在Javascript
- 8. 修剪字符串與Dapper.NET
- 9. php修剪字符串
- 10. 修剪字符串NHibernate的
- 11. 阿達 - 修剪和串
- 12. Swift修剪字符串
- 13. 回聲修剪字符串
- 14. 修剪字符和修剪字符串 - Python
- 15. 字符串修剪/子字符串C#
- 16. 試圖修剪'字符串'字符串?
- 17. 修剪功能沒有真正修剪
- 18. PHP修剪不修剪的空間
- 19. 讀取JSON數據和修剪串
- 20. 字符串中的修剪行
- 21. 在C++中修剪字符串
- 22. 用空白修剪一個字符串
- 23. 修剪字符串,刪除空白
- 24. 修剪一個字符串使用css
- 25. 從字符串修剪空白?
- 26. 字符串修剪刪除空間?
- 27. 如何修剪此JavaScript字符串?
- 28. 如何從空間修剪字符串
- 29. SQL查詢來修剪字符串
- 30. 修剪列表中的字符串
是效率的大問題?或者它只是一個'很高興有'? – 2012-07-28 17:07:49
效率最高的是:子串(18,19) – 2012-07-28 17:52:07
顯示你的**不夠**的方式。我們可以嘗試改進它。 – 2012-07-28 20:53:10