Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java String.split on dot不';I don’我没有按预期工作_Java_String_Stringbuilder - Fatal编程技术网

Java String.split on dot不';I don’我没有按预期工作

Java String.split on dot不';I don’我没有按预期工作,java,string,stringbuilder,Java,String,Stringbuilder,我有一个字符串=12.05.2014 我尝试使用splitby“”,但由于某些原因,它返回空数组 System.out.println(newDate); System.out.println(newDate.length()); String [] dateCells = newDate.split("."); StringBuilder sBuilder = new StringBuilder(); sBuilder.append(dateCells[2]).append(dateCell

我有一个字符串=12.05.2014

我尝试使用splitby“”,但由于某些原因,它返回空数组

System.out.println(newDate);
System.out.println(newDate.length());
String [] dateCells = newDate.split(".");

StringBuilder sBuilder = new StringBuilder();
sBuilder.append(dateCells[2]).append(dateCells[0]).append(dateCells[1]);
System.out.println(sBuilder.toString());
输出为:

12.05.2014
10
            //empty line
你的情况是

for(int i = dateCells.length; i < 0; i--){

此外,在对其进行拆分时,需要转义
,因为
String.split()
视为正则表达式

public class Foo{
    public static void main(String[] args) {
        String hi = "hello.world.good.bye";
        String[] parts = hi.split("\\.");
        for (int i = 0;i < parts.length; i++)
            System.out.println(parts[i]);
    }
}
公共类Foo{
公共静态void main(字符串[]args){
String hi=“你好,世界,再见”;
String[]parts=hi.split(\\);
对于(int i=0;i
split
使用正则表达式,在正则表达式中
表示“行分隔符旁边的任何字符”

因此,您在每个角色上进行拆分,创建一个充满空元素的数组,如

"foo".split(".")
将首先创建
[“”、“”、“”、“”]
,但由于
拆分
也跟踪放置在数组末尾的空元素,因此将得到空数组
[]
。通过将负值传递为
limit
,可以使用重载版本的split
split(regex,limit)
关闭尾随的最后一个空字符串

要解决此问题,您需要退出
。为此,您可以使用例如

  • split(“\\”)
    -正则表达式中的标准转义
  • 拆分(“[.]”)
    -使用
  • split(“\\Q.\\E”)
    -
    \Q
    \E
    标记应将正则表达式元字符视为简单文本的区域
  • split(Pattern.quote(“.”)
    -此方法在正则表达式编译器中使用
    Pattern.LITERAL
    标志,指出正则表达式中使用的元字符是简单的文本,没有任何特殊意义

另一个问题是
for
循环中的条件,但中有更多关于它的信息。

将解决此问题,但当我重新启动时,datecell数组将被禁用empty@fadytaher这是因为
split
的参数是一个正则表达式。转义
。split方法采用正则表达式,因此需要转义点,即
split(\\)
"foo".split(".")