我有一個特定的Scala代碼,我發現這個分割線的問題。以前我只用分割線,如:Scala中的這條分界線是什麼意思?
var newLine = line.split(",")
,這是什麼意思分裂?
var newLine2 = line.split(",(?=([^\"]*\"[^\"]*\")*[^\"]*$)")
我需要分割線是這樣的:
1966, "Green, Green Grass of Home", Tom Jones, 850000
提前感謝!
我有一個特定的Scala代碼,我發現這個分割線的問題。以前我只用分割線,如:Scala中的這條分界線是什麼意思?
var newLine = line.split(",")
,這是什麼意思分裂?
var newLine2 = line.split(",(?=([^\"]*\"[^\"]*\")*[^\"]*$)")
我需要分割線是這樣的:
1966, "Green, Green Grass of Home", Tom Jones, 850000
提前感謝!
分割方法內的字符串定義一個regular expression。 該組(?=([^\"]*\"[^\"]*\")*[^\"]*$)
是positive lookahead assertion。這意味着以逗號分隔,但只有在([^\"]*\"[^\"]*\")*[^\"]*$
之後的逗號之後。
([^\"]* # a series of non double quote characters
\" # a double quote
[^\"]* # a series of non double quote characters
\") # a double quote
* # repeat that whole group 0 or more times
[^\"]*$ # a series of non double quote characters till the end of the string
這意味着它僅將在逗號分割,當有雙引號的逗號以下等量,所以換句話說,只有分裂如果逗號不是雙引號內部。 (只要字符串中只有一對引號就可以工作。)
感謝您的快速和有益的答案! :)現在它是有道理的。 – amko23
除了聲明語法'val name = expression',這不是Scala的東西。 'split'方法在'java.lang.String'上定義:http://docs.oracle.com/javase/6/docs/api/java/lang/String.html#split(java.lang.String) –