【问题标题】:how split string in javajava中如何分割字符串
【发布时间】:2013-03-01 02:51:31
【问题描述】:

我在android中有项目,我需要拆分字符串,这实际上是日期,这里是我要拆分的字符串:

String datetime = "01/03/2013 09:00";

我就是这样称呼他们的:

int year = splitDateTime(dateTime)[0];
public int[] splitDateTime(String datetime){
        String date_time = datetime;
        String delimiter = "//:";

        String[] sParts;
        int[] intParts;

        sParts = date_time.split(delimiter);
        intParts = new int[sParts.length];

        for(int i =0; i < sParts.length ; i++)
            intParts[i] = Integer.parseInt(sParts[i]);

        return intParts;
    }

但它总是给我一个错误,所以如果你能帮助我,我会很高兴。 干杯

【问题讨论】:

  • 我正在使用 DateFormat 将字符串解析为日期并从那里开始。
  • 有更好的方法从日期中获取日期、月份、年份和其他元素,而不是拆分它。如果日期格式发生变化怎么办?
  • 您的deliminator(请正确拼写您的代码;))永远不会出现在您的字符串中。

标签: java android date calendar alarmmanager


【解决方案1】:

我打赌你的意思是这样的:

String datetime = "01/03/2013 09:00";

String[] sParts = datetime.split("[/:\\s+]");
int[] iParts = new int[sParts.length];

for(int i = 0; i < sParts.length; i++)
    iParts[i] = Integer.parseInt(sParts[i]);

System.out.println(Arrays.toString(iParts));

输出:

[1, 3, 2013, 9, 0]

【讨论】:

  • 我需要这样输出 1 3 2013 9 0
  • 那么您需要做的就是将“分隔符”更改为“[/:\\s+]”并确保将正确的变量名传递给函数
  • 我应该把它转换成什么,因为你传给我的这个新的和上面的一样。
【解决方案2】:

我认为你应该使用Calendar

String dateTime = "01/03/2013 09:00";
SimpleDateFormat f = new SimpleDateFormat("dd/MM/yyyy HH:mm");
Date d = f.parse(dateTime);

Calendar c = Calendar.getInstance();
c.setTime(d);
int year = c.get(Calendar.YEAR);

【讨论】:

  • 我使用它,但由于某种原因,我不知道什么时候得到一个月,它给了 2 而不是 3,我不知道它有什么问题。
  • 通常 android 日历月份从 0 开始为 1 月,所以你必须添加一个以获得正确的值
  • java 日历月从索引 0 开始,所以总是需要添加 1
【解决方案3】:

您可以使用正则表达式,使用 ^(\d+)/(\d+)/(\d+) (\d+):(\d) 之类的东西,您可以获得每个捕获的组。

【讨论】:

    【解决方案4】:

    我认为基于 StringTokenizer 的解决方案将是最快的

    public static int[] splitDateTime(String dateTime) {
        int[] intParts = new int[5];
        StringTokenizer t = new StringTokenizer(dateTime, "/ :");
        for (int i = 0; t.hasMoreTokens(); i++) {
            intParts[i] = Integer.parseInt(t.nextToken());
        }
        return intParts;
    }
    
    public static void main(final String[] args) throws IOException {
        System.out.println(Arrays.toString(splitDateTime("01/03/2013 09:00")));
    }
    

    输出

    [1, 3, 2013, 9, 0]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-04-25
      • 1970-01-01
      • 2014-09-25
      • 2012-04-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多