4
A
回答
7
String cannot be of zero length.
大概解釋了原因。
8
這是正確的documentation for string.Replace()。如果嘗試用「空值」參數替換爲空字符串,則會引發異常。
Exception Condition
ArgumentException oldValue is the empty string ("").
如果你仔細想想,你實際上是想,當你試圖找到另一個字符串一個空字符串,並與東西取代它呢?從概念上講,這沒有意義。
1
它會拋出異常,因爲永遠不會找到""
。
可以爭辯說,兩個""
都不存在於一個字符串中,或者任何字符串中都有無限數量的""
。
它只是簡單地用空字符串替換空字符串沒有意義。
0
我想這是因爲string.Replace()循環通過字符從0到它的.Length。顯然這隻會跳過循環,因爲沒有任何東西可以循環,也許他們扔出了偏執狂?
0
那麼,你期望什麼?
你想什麼都不用替換?你到底想做什麼?
假設舊字符串是「ABC」,那麼在您致電Replace
之後,您希望它是什麼?
在這種特殊情況下,拋出的異常是ArgumentException,它的文本是「字符串不能爲零長度」。
因此,調用.Replace
方法的標準是,您要替換的不是沒有內容的字符串。
讓我們來看看的String.Replace(String, String)文檔:
在例外它說:
ArgumentNullException,如果屬性oldValue是空引用(在Visual Basic中爲Nothing)。
或
ArgumentException的,如果屬性oldValue是空字符串( 「」)。
因此,一切都表現得像預期的那樣。
0
其原因是,從概念上講,每個字符串在開始,結尾和字符之間包含無限數量的空字符串。 (這就是爲什麼foo.IndexOf("")
對於任何字符串foo
都將始終返回0的原因。)用其他內容替換所有無限量的空字符串是沒有意義的操作。
相關問題
- 1. C++異常拋出
- 2. 在C++中拋出異常異常
- 3. 在postgresql函數中拋出異常
- 4. C#Webservice:在JSON中拋出帶有額外屬性的異常
- 5. C++/C#異常拋出
- 6. C#運算符?並拋出異常
- 7. numpy ndarray在截斷字符串時拋出異常
- 8. XamlReader.Parse在空字符串上拋出異常
- 9. 在Ruby中,將異常與字符串連接時拋出異常
- 10. ASP.NET WebService在拋出異常時返回異常字符
- 11. 魔術異常拋出拋出異常
- 12. 在拋出C++函數聲明時會拋出其他異常嗎?
- 13. C#/ ASP - 異常拋出
- 14. 異常拋出鎖c#2
- 15. C# - 拋出異常類
- 16. Objective-C異常未拋出
- 17. SqlConnection.Open拋出異常C#
- 18. 拋出異常Xamarin c#
- 19. C#委託拋出異常
- 20. 拋出異常的C#
- 21. catch塊中的函數拋出異常
- 22. 從輔助函數中拋出異常
- 23. 聲明函數拋出異常與Qunit
- 24. UDF函數拋出空指針異常
- 25. ServerSocket的構造函數拋出異常
- 26. EJB3構造函數拋出異常?
- 27. Angular2,構造函數DI拋出異常
- 28. DllIImport函數拋出堆棧異常
- 29. 從構造函數中拋出異常
- 30. 拋出異常匿名遞歸函數
* >>你想要做什麼?*當你使用動態字符串作爲字符串查找時出現這個問題。我記得在構建編輯密碼的日誌消息時遇到過這個問題。例如,日誌(ConnectString.Replace(pw,「***」))如果密碼是空白的,我的Replace會炸燬,所以我最終創建了一個「安全替換」功能,無害地返回原始字符串,如果發現字符串爲空或空白。 – ftexperts 2016-06-29 16:21:31