用于拆分空间的StringTokenizer

时间:2012-11-15 15:31:04

标签: java android jfreechart simpledateformat stringtokenizer

我有字符串格式:

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方法只获得用作分隔符的日期/时间之间的日期和空格 如何与时间在一起?

3 个答案:

答案 0 :(得分:3)

更好地使用split()中的String方法,出于所有实际目的StringTokenizerdeprecated,它仍然只是为了向后兼容。

尝试这样的事情:

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

现在,结果数组中的每个位置都将包含一段数据,您可以继续将其转换为适当的数据类型。特别是,对于日期(由实际日期加时间组成),请执行以下操作:

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

上述优点是您可以忘记在tokenizer中获取下一个标记,并且从一开始就知道读取了多少元素(数组的长度)。

答案 1 :(得分:2)

使用:

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

将两个“单词”传递给SimpleDateFormat对象。

答案 2 :(得分:1)

使用一个参数构造函数(要标记化的字符串)创建StringTokenizer。此构造函数假定任何空格都是不同标记之间的分隔符。您的日期表示中间有空格。因此,StringTokenizer会占用日期的一半,而另一个则为第二个令牌。

当您稍后使用空格来分隔其他字段时,直接的解决方案就是读取两个标记并重建组合字段:

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