Tôi đang sử dụng một tab (/ t) là dấu phân cách và tôi biết có một số lĩnh vực có sản phẩm nào trong dữ liệu ví dụ của tôi:Java StringTokenizer.nextToken() bỏ qua trên các lĩnh vực có sản phẩm nào
one->two->->three
đâu -> bằng tab . Như bạn có thể thấy một trường trống vẫn được bao quanh một cách chính xác bởi các tab. Dữ liệu được thu thập bằng cách sử dụng vòng lặp:
while ((strLine = br.readLine()) != null) {
StringTokenizer st = new StringTokenizer(strLine, "\t");
String test = st.nextToken();
...
}
Tuy nhiên, Java bỏ qua "chuỗi rỗng" này và bỏ qua trường này.
Có cách nào để phá vỡ hành vi này và buộc java phải đọc trong các trường trống không?
Sử dụng 'String.split ("\ t") 'để thay thế. –
từ tài liệu java của String tokenizer "StringTokenizer là một lớp kế thừa được giữ lại vì lý do tương thích mặc dù việc sử dụng nó không được khuyến khích trong mã mới. Khuyến cáo rằng bất kỳ ai tìm kiếm chức năng này đều sử dụng phương thức tách của String hoặc java.util.regex thay vào đó. " – Inquisitive
Chỉ cần một người đứng đầu lên rằng nó trông giống như bằng cách sử dụng 'string.split (" \ t ")' sẽ không trả lại bất kỳ thẻ trống rỗng cuối cùng ở cuối. Nếu điều đó quan trọng, hãy sử dụng 'string.split (" \ t ", -1)'. – Oded