Tách chuỗi bằng dấu phân cách


96

Tôi hiện đang cố gắng tách một chuỗi 1128-2để tôi có thể có hai giá trị riêng biệt. Ví dụ: value1: 1128 và value2: 2, để sau đó tôi có thể sử dụng từng giá trị riêng biệt. Tôi đã cố gắng split()nhưng không thành công. Grails có cách nào cụ thể để xử lý vấn đề này không, hay một cách tốt hơn?


Tôi tò mò tại sao điều này không hoạt động với chỉ tách? (a, b) = "ab" .split ("-") hoạt động tốt đối với tôi (Và tôi tin rằng nó cũng sẽ hoạt động trong Java). Tôi sử dụng nó mọi lúc. CHỈNH SỬA: Chỉ nhìn qua thì chúng hơi khác một chút - split trả về một mảng trong khi tokenize trả về ArrayList. Hầu như điều tương tự trong Groovy, sự chia rẽ có ưu điểm là nó cổng một cách dễ dàng để Java, tôi không nghĩ rằng tokenize là một phương pháp java trên String (trừ khi đó là một trong khá mới và tôi đã bỏ lỡ nó)
Bill K

Câu trả lời:



62

Bạn đang gọi splitnhư thế nào? Nó hoạt động như thế này:

def values = '1182-2'.split('-')
assert values[0] == '1182'
assert values[1] == '2'

10
Tôi nghĩ sẽ rất hữu ích nếu bạn thêm một chiếc hộp có cạnh mà bạn có thể gặp phải khi bẻ bởi dấu '.' ký tự. Vì vậy, bạn sẽ cần phải thoát khỏi dấu chấm nếu bạn muốn tách trên một dấu chấm chữ: String extensionRemoved = filename.split("\\.")[0]; Nếu không, bạn đang tách trên regex., Có nghĩa là "bất kỳ ký tự nào". Lưu ý dấu gạch chéo ngược kép cần thiết để tạo một dấu gạch chéo ngược đơn trong regex.
Exequiel Barrirero

Cảm ơn vì điều đó. Phương pháp này được viết ra để làm cho nhiều người bối rối nhất có thể.
Dustin Oprea

@ExequielBarrirero Nhận xét đó đã cứu mạng tôi hôm nay
user3692823

23

def (value1, value2) = '1128-2'.split('-') nên làm việc.

Bất cứ ai có thể vui lòng thử điều này trong Groovy Console?

def (v, z) =  '1128-2'.split('-')

assert v == '1128'
assert z == '2'

1
Tôi đã gặp vấn đề với điều đó, nếu bạn muốn tách trên một số loại ký tự regex như. hoặc là *. Bạn cần phải thoát khỏi nó, mã thông báo cũng hoạt động trong những trường hợp đó.
chandank

6

Bạn cũng có thể làm:

Integer a = '1182-2'.split('-')[0] as Integer
Integer b = '1182-2'.split('-')[1] as Integer

//a=1182 b=2

4

chia tách không hoạt động theo cách đó trong Groovy. bạn phải sử dụng mã hóa ...

Xem tài liệu:

http://groovy-lang.org/gdk.html#split ()


Thực tế phân tách hoạt động tốt, bạn hiểu sai, vui lòng xem phần bên dưới, String [] split_Comma_ByProperty = Stringyouwanttosplit.split (",");
sathya

0
dependencies {
   compile ('org.springframework.kafka:spring-kafka-test:2.2.7.RELEASE') { dep ->
     ['org.apache.kafka:kafka_2.11','org.apache.kafka:kafka-clients'].each { i ->
       def (g, m) = i.tokenize( ':' )
       dep.exclude group: g  , module: m
     }
   }
}

Xin chào! Mặc dù mã này có thể giải quyết câu hỏi, bao gồm giải thích về cách thức và lý do tại sao điều này giải quyết vấn đề sẽ thực sự giúp cải thiện chất lượng bài đăng của bạn và có thể dẫn đến nhiều phiếu bầu hơn. Hãy nhớ rằng bạn đang trả lời câu hỏi cho độc giả trong tương lai, không chỉ người hỏi bây giờ. Vui lòng chỉnh sửa câu trả lời của bạn để thêm giải thích và đưa ra dấu hiệu về những giới hạn và giả định áp dụng.
Brian
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.