修剪串
回答
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. 修剪字符串與Dapper.NET
- 4. Swift修剪字符串
- 5. 修剪字符和修剪字符串 - Python
- 6. PHP修剪不修剪的空間
- 7. 修剪字符串,刪除空白
- 8. 來自oracle的修剪字符串
- 9. 修剪字符串中的Teradata
- 10. 在C++中修剪字符串
- 11. 修剪Java中的字符串空白
- 12. 字符串修剪和拆分
- 13. Golang:字符串修剪功能
- 14. 從Javascript末尾修剪字符串
- 15. Linq自動修剪我的字符串!
- 16. 修剪網址字符串。 c#
- 17. 從字符串修剪空白?
- 18. 字符串空白清理不修剪
- 19. C#問題修剪線串內打破
- 20. 函數返回子和修剪串
- 21. 如何在AppleScript中修剪字符串?
- 22. 腳本字符串不修剪
- 23. 使用Javascript修剪字符串
- 24. 如何修剪此JavaScript字符串?
- 25. 修剪unicode字符串中的空格
- 26. 如何修剪以下字符串?
- 27. 修剪字符串的offset和count
- 28. 從字符串修剪字符
- 29. 如何從空間修剪字符串
- 30. 連接和修剪字符串
是效率的大問題?或者它只是一個'很高興有'? – 2012-07-28 17:07:49
效率最高的是:子串(18,19) – 2012-07-28 17:52:07
顯示你的**不夠**的方式。我們可以嘗試改進它。 – 2012-07-28 20:53:10