2015-06-07 23 views
7

Phương pháp sạch nhất để thêm một ký tự $ trong chuỗi ký tự là gì?Ký tự đô la ký tự trong chuỗi

Giải pháp tốt nhất mà tôi đã đưa ra cho đến giờ là """${"$"}...""", trông có vẻ xấu với tôi.

Trả lời

8

Để thoát khỏi dấu đô la trong một chuỗi chữ, sử dụng ký tự gạch chéo ngược:

"\$" 

Để thoát nó trong nguyên chuỗi chữ ("""..."""), giải pháp thay thế bạn đã cung cấp thực sự là giải pháp dễ dàng nhất vào lúc này. Có vấn đề trong trình theo dõi lỗi mà bạn có thể gắn dấu sao và/hoặc bỏ phiếu cho: KT-2425.

+0

Vấn đề này trong YouTrack (KT-2425) được đánh dấu là 'mở' nhưng thực sự điều này không còn tồn tại dưới dạng sự cố, hãy xem câu trả lời khác bên dưới. –

+1

Không có gì thay đổi liên quan đến vấn đề đó: dấu hiệu đồng đô la có thể (và có thể) được thoát bằng dấu gạch chéo ngược bên trong các chuỗi bình thường nhưng không thể bên trong các chuỗi ký tự thô ('" "" ... "" "'). Tuy nhiên câu trả lời của tôi chỉ liên quan đến câu hỏi sau, không chắc chắn tại sao, tôi sẽ sửa lỗi đó. –

+0

Ah, hiện đã rõ. –

3

Có vẻ như bạn đã dán mã của mình một cách chính xác vì bạn chỉ có 3 dấu ngoặc kép.

Nhưng dù sao, cách tốt nhất để làm điều này là chỉ cần thoát khỏi dấu đô la như sau:

"\$" 
+0

Bạn không thể thoát ra bên trong một chuỗi thô, mà tôi tin là mục đích của câu hỏi. – jkschneider

+0

@jkschneider bạn có thể trong Kotlin hiện tại, câu hỏi và nhận xét của bạn đã lỗi thời cho trạng thái hiện tại của Kotlin. Câu trả lời này là chính xác. –

+1

@JaysonMinard no, bạn không thể làm điều đó trong chuỗi thô, vui lòng đọc vấn đề. –

1

Trong hiện tại Kotlin 1.0 (và beta) bạn chỉ có thể trốn thoát với dấu chéo ngược "\$"

unit test qua Điều này chứng tỏ các trường hợp:

@Test public fun testDollar() { 
    val dollar = '$' 

    val x1 = "\$100.00" 
    val x2 = "${"$"}100.00" 
    val x3 = """${"$"}100.00""" 
    val x4 = "${dollar}100.00" 
    val x5 = """${dollar}100.00""" 

    assertEquals(x5, x1) 
    assertEquals(x5, x2) 
    assertEquals(x5, x3) 
    assertEquals(x5, x4) 

    // you cannot backslash escape in """ strings, therefore: 

    val odd = """\$100.00""" // creates "\$100.00" instead of "$100.00" 
    // assertEquals(x5, odd) would fail 
} 

Tất cả các phiên bản làm cho một chuỗi "$100.00" trừ một trường hợp kỳ lạ ở cuối.

+3

"Một trường hợp kỳ lạ ở cuối" là chính xác những gì OP đã yêu cầu. –

+1

tốt, bây giờ tất cả các tùy chọn có thể nhìn thấy ;-) –