2016-07-25 33 views
1

我有這個String我使用Selenium閱讀:斯卡拉正常化串有額外的空間和新的生產線

val address="\nZONE COFFERCDALD ENGLOS LES GE\nRUE DU HEM\n21542 SDQUEFIN " 

,我想比較這String到另一個問題:所以我

val compareTo ="ZONE COFFERCDALD ENGLOS LES GE RUE DU HEM 21542 SDQUEFIN" 

正在考慮做類似的事情:

val newAddress = address.replace("\n", " ").replace(" ", " ").trim 

您是否認爲這將是最好的解決方案?

+0

鑑於您的示例,您的解決方案已經很好看了。 – pedrofurla

回答

2

如果您想修剪任何多餘的空格,則當您連續顯示3個以上的空格時,您的代碼無法按預期工作。

"aaa ab ccc".replace("\n", " ").replace(" ", " ").trim //aaa ab ccc

address.replaceAll("\\s+", " ")可能是做你正在努力實現的目標。

+0

'address.replaceAll(「\\ s +」,「」)''可能更好 –

1

繞過串的複雜性尾隨和格式化字符考慮這些變化,

val a = address.split("\\W+").filter(_.nonEmpty) 
Array(ZONE, COFFERCDALD, ENGLOS, LES, GE, RUE, DU, HEM, 21542, SDQUEFIN) 

val c = compareTo.split("\\W+").filter(_.nonEmpty) 
Array(ZONE, COFFERCDALD, ENGLOS, LES, GE, RUE, DU, HEM, 21542, SDQUEFIN) 

現在我們可以比較的轉化,例如像這樣,

a.zip(c).forall(t => t._1 == t._2) 

更新基於API的數組比較,如@ASpotySpot評論,

a.sameElementsAs(c) 
+1

而不是zip,那麼你可以使用.sameElementsAs。例如。 Array(1,3,2).sameElementsAs(Array(1,3,2)) –

+0

@ASpotySpot Definte!謝謝。 – elm