2015-01-14 20 views
8

Có thể kiểm tra xem chuỗi có rỗng hoặc trống khi sử dụng đối sánh không?So khớp mẫu để kiểm tra xem chuỗi có rỗng hay không rỗng

Tôi đang cố gắng để làm một cái gì đó như:

def sendToYahoo(message:Email) ={ 
    val clientConfiguration = new ClientService().getClientConfiguration() 
    val messageId : Seq[Char] = message.identifier 
    messageId match { 
    case messageId.isEmpty => validate() 
    case !messageId.isEmpty => //blabla 
    } 
} 

Nhưng tôi có một lỗi biên dịch.

Cảm ơn trước.

Trả lời

19

Bạn có thể viết một hàm đơn giản như:

def isEmpty(x: String) = Option(x).forall(_.isEmpty) 

hoặc

def isEmpty(x: String) = x == null || x.isEmpty 

Bạn cũng có thể muốn cắt chuỗi, nếu bạn xem xét " " để được sản phẩm nào là tốt.

def isEmpty(x: String) = x == null || x.trim.isEmpty 

và sau đó sử dụng nó

val messageId = message.identifier 
messageId match { 
    case id if isEmpty(id) => validate() 
    case id => // blabla 
} 

hoặc không có một match

if (isEmpty(messageId)) { 
    validate() 
} else { 
    // blabla 
} 

hoặc thậm chí

object EmptyString { 
    def unapply(s: String): Option[String] = 
    if (s == null || s.trim.isEmpty) Some(s) else None 
} 

message.identifier match { 
    case EmptyString(s) => validate() 
    case _ => // blabla 
} 
+0

Ý tưởng tốt với trang trí! Nó thường bị lãng quên. – Madoc

+0

'không. tồn tại == forall' – sschaef

+0

@sschaef đủ công bằng, cảm ơn, tôi đã cập nhật nó. –

6
def isNullOrEmpty[T](s: Seq[T]) = s match { 
    case null => true 
    case Seq() => true 
    case _ => false 
} 
+0

các nhà thiết kế ngôn ngữ Scala sẽ làm nubies scala của chúng tôi lifes nhiều hơn nữa dễ dàng hơn bằng cách cung cấp một isNu đặc điểm có thể sử dụng được với phương thức isNull như: def isNull [T] (obj: T) = obj match { case null => true case _ => false } –

Các vấn đề liên quan