Re: [問題] String.split

看板java作者 (LetMeGoogleThatForYou)時間15年前 (2010/07/05 08:20), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串3/3 (看更多)
※ 引述《AmosYang (LetMeGoogleThatForYou)》之銘言: : ※ 引述《jlovet ( )》之銘言: : : → jlovet:你這麼厲害為什麼不要解釋一下為什麼會有空白 07/05 05:04 : javadoc 已經寫得很清楚,提供了足夠的資訊給想追根究底的人 : java.* 下的 source code 也已經開出來給你看 : 有那個時間嗆不如腳踏實地作學問 : → jlovet:是,你說的對,javadoc的確有說他為什麼跟其他語言都要做不 07/05 06:13 : → jlovet:一樣,是我沒有看清楚,不好意思 07/05 06:15 與其比較 "切字串" 各種不同的 implementation, 不如再想深一層,從語意上來想 以「用 non-empty 字串來切另一個字串」的實作為例 大多數人很簡單的就可以達成一個共識 是故 ":".split(":") 傳回兩個空字串也不覺得奇怪 然而,「用空字串來切另一個字串」有許多不同的解釋 我覺得「用空字串來切另一個字串」有一種用零去除另一個數字的感覺,是故應該 throw 你預期「用空字串來切另一個字串」應該把整個字串切開,傳回一連串長度為1的字串 (我猜你的想法是: "ABC" 可視為 "A", "", "B", "", "C") 可能有人在修 automata/computability ,從「任一字串是否包含唯一或無限多 的空字串」開始想,最後在路上被車撞 XD ( http://xkcd.com/356/ ) (這種人可能會想: 事實上 "ABC" 可視為 "", "", ..., "A", "", "", ..., "B", "", "", ..., "C", "", "", ...) 而當初寫 java String.split() 的人大概是想: 贛! 沒時間了,讓寫 Pattern.split() 的人去傷這個腦筋吧 是故,要回答「為什麼傳回來的第一個字串是空字串?」很簡單, 因為程式碼就是那樣寫的 若要回答「為什麼 split() 要寫成這樣?」或 「要怎麼定義“用空字串來切另一個字串”?」 …到最後真的只能像岸和田博士說的:「不要懷疑」 XD -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 65.87.177.87 ※ 編輯: AmosYang 來自: 65.87.177.87 (07/05 08:39)
文章代碼(AID): #1CCILAOJ (java)
討論串 (同標題文章)
文章代碼(AID): #1CCILAOJ (java)