簡體   English   中英

StringTokenizer用於拆分空間

[英]StringTokenizer for split space

我有字符串遵循格式:

2012.11.15 22:00:00 1.2971 1.2974 1.2959 1.296

我使用以下代碼:

DateFormat df = new SimpleDateFormat("yyyy.MM.dd HH:mm:ss");
                String inputLine;
                in.readLine();
                while ((inputLine = in.readLine()) != null) {
                    StringTokenizer st = new StringTokenizer(inputLine);
                    Date date       = df.parse( st.nextToken() );
                    double open     = Double.parseDouble( st.nextToken() );
                    double high     = Double.parseDouble( st.nextToken() );
                    double low      = Double.parseDouble( st.nextToken() );
                    double close    = Double.parseDouble( st.nextToken() );
              ...

但是方法SimpleDateFormate僅獲得日期/時間之間的日期和空格作為分隔符。
如何一起獲得時間約會?

出於所有實際目的,最好在String使用split()方法, 不建議使用 StringTokenizer ,並且它僅在向后兼容的情況下仍然存在。

嘗試這樣的事情:

String[] data = inputLine.split("\\s+");

現在,結果數組中的每個位置將保存一條數據,您可以繼續將其轉換為適當的數據類型。 特別是,對於日期(由實際日期和時間組成),請執行以下操作:

Date date = df.parse(data[0] + " " + data[1]);

上面的優點是您可以省去在令牌生成器中獲取下一個令牌的麻煩,並且從一開始就知道要讀取多少個元素(數組的長度)。

采用:

Date date       = df.parse( st.nextToken() + " " + st.nextToken() );

將兩個“單詞”都傳遞給SimpleDateFormat對象。

使用一個參數構造函數(要標記化的字符串)創建一個StringTokenizer 此構造函數假定任何空格都是不同標記之間的分隔符。 日期表示形式在中間有空格。 因此, StringTokenizer將日期減少一半,而將另一個留給第二個令牌。

當您以后使用空格來分隔其他字段時,直接的解決方案就是讀取兩個標記並重建組合的字段:

 Date date = df.parse( st.nextToken()+" "+ st.nextToken());

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM