【问题标题】:How to split this string using split function()如何使用拆分函数()拆分此字符串
【发布时间】:2013-01-14 03:53:17
【问题描述】:

我有一个字符串“2013-1-31 08:25 PM”

我想从空间中分割出​​来:

我可以在空格后拆分为“2013-1-31 08”和“25 PM”

现在我想要“2013-1-31”和“08”

我无法获取新字符串中 08 中的值,但我得到了“2013-1-31”

String view_datee = view_date.getText().toString();

               String[] separated = view_datee.split(":");
               String first =separated[0];
               String second=separated[1]; 


               String[] newSeperated = first.split(" ");
               String third = newSeperated[0]; 
               String four=   newSeperated[1];



               Log.i("first",first);
               Log.i("second",second);

               Log.i("third", third);
               Log.i("four", four);

我不知道怎么得到四个值的意思是08。

【问题讨论】:

  • 您应该解析日期并处理日期对象,而不是拆分。我将为您省去头痛和错误。
  • 我从时间选择器中获取日期,所以它给了我整个字符串
  • 那么你绝对应该解析日期并处理日期对象:) 检查this out

标签: java android


【解决方案1】:

我已经检查了您的代码并且它工作正常.. 这是我发布的任何我输入和执行的内容:

    String teststr = "2013-1-31 08:25 PM";
    System.out.println("teststr: " + teststr);
    String[] separated = teststr.split(":");
    String first = separated[0];
    String second = separated[1];
    String[] newSeperated = first.split(" ");
    String third = newSeperated[0];
    String four = newSeperated[1];
    System.out.println("first : "+first);
    System.out.println("second : "+second);
    System.out.println("third : "+third);
    System.out.println("fourth : "+four);

它给了我以下输出: teststr: 2013-1-31 08:25 PM 第一篇:2013-1-31 08 第二:25 PM 第三次:2013-1-31 第四:08

【讨论】:

    【解决方案2】:

    检查下面的代码,它工作正常

    String date = "2013-1-31 08:25 PM";
        String[] split = date.split(":");
        System.out.println(split[0]+"date:::"  + split[1] );
        String[] Datesplit = split[0].split(" ");
        System.out.println(Datesplit[0]+"date splited:::"  + Datesplit[1] );
    

    下面的输出

    2013-1-31 08date:::25 PM
    2013-1-31date splited:::08
    

    【讨论】:

      【解决方案3】:

      你确定字符串以 PM 或 AM 结尾吗 然后你可以这样做

      String s= "2013-1-31 08:25 PM";
      
              String newStr=s.substring(s.indexOf(" ")+1,s.lastIndexOf(" "));
              System.out.println(newStr);
              String result[]=newStr.split(":");
              System.out.println(result[0]);
              System.out.println(result[1]);
      

      【讨论】:

        【解决方案4】:

        这是一个使用日期/日历的示例(它使用桌面 java,但很容易转置):

        public static void main(String args[]) throws Exception {
            String data = "2013-1-31 08:25 PM";
            DateFormat fmt = new SimpleDateFormat("yyyy-MM-dd hh:mm a");
            Calendar cal = Calendar.getInstance();
            cal.setTime(fmt.parse(data));
            //2013-1-31
            System.out.println(new SimpleDateFormat("yyyy-M-dd").format(cal.getTime()));
            //20
            System.out.println(cal.get(Calendar.HOUR_OF_DAY));
            //08
            System.out.println(new SimpleDateFormat("hh").format(cal.getTime()));
        }
        

        请注意,08:25 PM20:05,因此您可以根据需要获得 08 或 20。我在我的例子中都展示了。

        【讨论】:

          【解决方案5】:

          来自官方Javadocsplit 接受一个正则表达式作为参数。

          因此,您不能使用 " " 作为 split 参数。

          相反,您应该使用"\s" 以空格分隔字符串。

          那么,您的代码将是:

                     String[] separated = view_datee.split(":");
                     String first =separated[0];
                     String second=separated[1]; 
          
          
                     String[] newSeperated = first.split("\\s");
                     String third = newSeperated[0]; 
                     String four=   newSeperated[1];
          
          
          
                     Log.i("first",first);
                     Log.i("second",second);
          
                     Log.i("third", third);
                     Log.i("four", four);
          

          【讨论】:

            【解决方案6】:

            试试这个,

            public static void main(String[] args) {
                    String str = "2013-1-31 08:25 PM";
                    System.out.println("[Date:"+str.split(" ")[0]+"][Hours:"+str.split(":")[0].split(" ")[1]+"]");
                }
            

            输出,

            run:
            [Date:2013-1-31][Hours:08]
            BUILD SUCCESSFUL (total time: 1 second)
            

            【讨论】:

              猜你喜欢
              • 2017-09-22
              • 1970-01-01
              • 1970-01-01
              • 2023-03-03
              • 2017-06-22
              • 2020-03-07
              • 1970-01-01
              相关资源
              最近更新 更多