Java String.split on dot不';I don’我没有按预期工作
我有一个字符串=12.05.2014 我尝试使用splitby“”,但由于某些原因,它返回空数组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
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
,可以使用重载版本的splitsplit(regex,limit)
关闭尾随的最后一个空字符串
要解决此问题,您需要退出
。为此,您可以使用例如
-正则表达式中的标准转义split(“\\”)
-使用拆分(“[.]”)
-split(“\\Q.\\E”)
和\Q
标记应将正则表达式元字符视为简单文本的区域\E
-此方法在正则表达式编译器中使用split(Pattern.quote(“.”)
标志,指出正则表达式中使用的元字符是简单的文本,没有任何特殊意义Pattern.LITERAL
另一个问题是
for
循环中的条件,但中有更多关于它的信息。将解决此问题,但当我重新启动时,datecell数组将被禁用empty@fadytaher这是因为split
的参数是一个正则表达式。转义
。split方法采用正则表达式,因此需要转义点,即split(\\)
。
"foo".split(".")