【问题标题】:Change from hour minute second to second from string从字符串从小时分钟秒更改为秒
【发布时间】:2013-05-20 08:59:51
【问题描述】:

现在,我有一个字符串 String time= "200hour 0minute 0second" 我想跟踪字符串中的数字并转换为第二个..如上字符串..我想获得值 200*3600.. 我的代码:

    //change from hour minute to second
public String changeSecond(String time)
{
    String result;
    int ind_hour=time.indexOf("hour");
    int ind_minute=time.indexOf("minute");
    int ind_second=time.indexOf("second");

    int hour=Integer.parseInt(time.substring(0, ind_hour));
    int minute=Integer.parseInt(time.substring(ind_hour+1, ind_minute));;
    int second=Integer.parseInt(time.substring(ind_minute+1, ind_second));

    result=String.valueOf(hour*3600+minute*60+second);

    return result;
}

但是当我运行 changeSecond(time)。它不起作用..我该怎么做。

【问题讨论】:

  • 不要这样做。它会很容易出现错误。您不能将小时、分钟和秒作为整数传递吗?
  • 究竟是什么不起作用?
  • 对每个要提取的字符串使用String.split();
  • int minute=Integer.parseInt(time.substring(ind_hour+1+"hour".length(), ind_minute)); ?
  • 其实我认为使用 split() 更好。 int hour = time.split("hour")[0]; int minute=time.split("小时")[1].splite("分钟")[0]; ......像这样的东西??

标签: java android string substring


【解决方案1】:
public String changeSecond(String time)
{
    String result;
int ind_hour=time.indexOf("hour");
int ind_minute=time.indexOf("minute");
int ind_second=time.indexOf("second");

int hour=Integer.parseInt(time.substring(0, ind_hour));
int minute=Integer.parseInt(time.substring(ind_hour+6, ind_minute));; // value 6 is length of minute 
int second=Integer.parseInt(time.substring(ind_minute+6, ind_second));

  int totalsec=((hour*60*60)+(minute*60)+second);
   result=String.valueOf(totalsec);

return result;

}

【讨论】:

    【解决方案2】:

    您应该对以下几行进行更改:

    int hour=Integer.parseInt(time.substring(0, ind_hour));
    int minute=Integer.parseInt(time.substring(ind_hour+5, ind_minute));
    int second=Integer.parseInt(time.substring(ind_minute+7, ind_second));
    

    【讨论】:

      【解决方案3】:

      它不是这样做的方法。但它会起作用。试试这个,

      String hour="200hour 0minute 0second";
      
           String[] secondarray=hour.split("hour");
      
           String second=secondarray[0]; //here "second" will have the value 200
      

      【讨论】:

      • 我想同时得到分和秒..:(
      【解决方案4】:

      您可以将选项卡分成 3 个部分:一个包含小时,另一个包含分钟,最后一个包含秒。

      public static String changeSecond(String time)
          {
              String tab[] = time.split(" ");
              String result = "";
              int ind_hour=tab[0].indexOf("hour");
              int ind_minute=tab[1].indexOf("minute");
              int ind_second=tab[2].indexOf("second");
      
              int hour=Integer.parseInt(tab[0].substring(0, ind_hour));
              int minute=Integer.parseInt(tab[1].substring(0, ind_minute));
              int second=Integer.parseInt(tab[2].substring(0, ind_second));
      
              result=String.valueOf(hour*3600+minute*60+second);
      
              return result;
          }
      

      【讨论】:

        【解决方案5】:

        这是我能想到的最干净的解决方案。只需拆分“”,然后删除不相关的文本。

        public String changeSecond(final String time)
        {
            final String[] times = time.split(" ");
            final int hour = Integer.parseInt(times[0].replace("hour", ""));
            final int minute = Integer.parseInt(times[1].replace("minute", ""));
            final int second = Integer.parseInt(times[2].replace("second", ""));
            return String.valueOf(hour*3600+minute*60+second);
        }
        

        【讨论】:

          【解决方案6】:

          初始代码抛出解析错误,因为字母字符被传递给Integer.parseInt 方法。包含字母字符是因为子字符串没有考虑术语小时、分钟和秒的长度。我建议拆分字符串以整理内容。

          public String changeSecond(String time) {
              String[] tokens = time.split(" ");
              tokens[0] = tokens[0].substring(0, tokens[0].indexOf("hour"));
              tokens[1] = tokens[1].substring(0, tokens[1].indexOf("minute"));
              tokens[2] = tokens[2].substring(0, tokens[2].indexOf("second"));
          
              return String.valueOf(Integer.parseInt(tokens[0]) * 3600
                      + Integer.parseInt(tokens[1]) * 60 + Integer.parseInt(tokens[2]));
          }
          

          【讨论】:

            【解决方案7】:

            更新您的小时、分钟和秒解析为:

                    int hour=Integer.parseInt(time.substring(0, ind_hour));
                    int minute=Integer.parseInt(time.substring(ind_hour + "hour".length() + 1, ind_minute));
                    int second=Integer.parseInt(time.substring(ind_minute + "minute".length() + 1, ind_second));
            

            【讨论】:

              猜你喜欢
              • 2013-01-12
              • 2012-06-08
              • 1970-01-01
              • 1970-01-01
              • 2015-05-06
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2021-10-29
              相关资源
              最近更新 更多