Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/198.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中按长度拆分字符串_Java_Android - Fatal编程技术网

java中按长度拆分字符串

java中按长度拆分字符串,java,android,Java,Android,可能重复: 我有一个String[]数据结构,如下所示 0.1953601.3675211.3675214.1025640.5860811.36752110.3540903.711844-5.2747252.539683 0.195360 1.367521 1.367521 4.102564 0.586081 1.367521 10.354090 3.711844 -5.274725 2.539683 我想把它分成这样一个数组 0.1953601.367

可能重复:

我有一个String[]数据结构,如下所示

0.1953601.3675211.3675214.1025640.5860811.36752110.3540903.711844-5.2747252.539683
  0.195360
  1.367521
  1.367521
  4.102564
  0.586081
  1.367521
 10.354090
  3.711844
 -5.274725
  2.539683
我想把它分成这样一个数组

0.1953601.3675211.3675214.1025640.5860811.36752110.3540903.711844-5.2747252.539683
  0.195360
  1.367521
  1.367521
  4.102564
  0.586081
  1.367521
 10.354090
  3.711844
 -5.274725
  2.539683
因此,在小数点后,值有6个有效数字

我尝试使用来自的正则表达式解决方案,但似乎不起作用

甚至这个

System.out.println(Arrays.toString(
  "Thequickbrownfoxjumps".split("(?<=\\G.{4})")
));
System.out.println(Arrays.toString(

“QuickBrownFoxJumps”.split((?不是正则表达式的一个很好的应用,IMHO:

 while not end-of-string
   if next-char is "-"
      take next 9 chars
   else
      take next 8 chars

正则表达式IMHO的应用不是很好:

 while not end-of-string
   if next-char is "-"
      take next 9 chars
   else
      take next 8 chars
断言

每个值的大小为8,但如果该值为负,则其大小为9

在问题中,答案为false,因为如果我手动拆分条目,结果如下:

0.195360
1.367521
1.367521
4.102564
0.586081
1.367521
10.35409
03.71184   <<< As you can see, it's not that you want
4-5.2747   <<< It's not a number
252.5396
83         <<< Bang! too short
代码如下:

static String[] split( String in ) {
   List< String > list = new LinkedList< String >();
   int dot = 0;
   for( int i = 0; dot > -1 && i < in.length(); i = dot + 7 ) {
      dot = in.indexOf( '.', i );
      if( dot > -1 ) {
         int last = Math.min( dot + 7, in.length());
         list.add( in.substring( i, last ));
      }
   }
   return list.toArray( new String[list.size()]);
}
静态字符串[]拆分(字符串插入){
ListList=newlinkedlist();
int点=0;
对于(int i=0;点>-1&&i-1){
int last=Math.min(点+7,in.length());
添加(在子字符串(i,最后一个)中);
}
}
return list.toArray(新字符串[list.size()]);
}
断言

每个值的大小为8,但如果该值为负,则其大小为9

在问题中,答案为false,因为如果我手动拆分条目,结果如下:

0.195360
1.367521
1.367521
4.102564
0.586081
1.367521
10.35409
03.71184   <<< As you can see, it's not that you want
4-5.2747   <<< It's not a number
252.5396
83         <<< Bang! too short
代码如下:

static String[] split( String in ) {
   List< String > list = new LinkedList< String >();
   int dot = 0;
   for( int i = 0; dot > -1 && i < in.length(); i = dot + 7 ) {
      dot = in.indexOf( '.', i );
      if( dot > -1 ) {
         int last = Math.min( dot + 7, in.length());
         list.add( in.substring( i, last ));
      }
   }
   return list.toArray( new String[list.size()]);
}
静态字符串[]拆分(字符串插入){
ListList=newlinkedlist();
int点=0;
对于(int i=0;点>-1&&i-1){
int last=Math.min(点+7,in.length());
添加(在子字符串(i,最后一个)中);
}
}
return list.toArray(新字符串[list.size()]);
}

@SeanPatrickFloyd是的,我在问题本身中提到了这一点。提供的解决方案似乎不起作用是的:或者使用我的番石榴回答:请考虑我的建议,以更正您对这些项目的断言length@SeanPatrickFloyd是的,我在问题本身中提到了这一点。这里提供的解决方案似乎并不适用工作是这样的:或者使用我的番石榴回答:请考虑我的建议,以更正您关于项目长度的断言。这可能是不正确的假设,因为
1.367521
->
10.354090
可能是
1.3675211
->
0.354090
,例如。但我也相信根据项目后面的数字进行猜测点是最合理的逻辑。[+1]@Aubin你的假设可能是对的。它的eeg数据可能就是你描述它的方式。我刚得到文本文件,原始数据我必须去实验室检查。但是关于代码,我在linkedlist中得到一个错误,它说“源代码级别低于1.7时不允许使用“”运算符,因为如果我更改了e级它说Android需要5.0或6.0级的编译器遵从性。找到“1.7”而不是是的,我的答案是Java 1.7,我会编辑它以在6@Aubin是的,我已经修复了。但是程序仍然在崩溃。现在不是因为同样的错误,尽管假设可能是错误的,因为
1.367521
->
10.354090
可能是错误的例如,be
1.3675211
->
0.354090
。但我也认为根据点后的数字进行猜测是最合理的逻辑。[+1]@Aubin你的假设可能是对的。它的eeg数据可能就是你描述它的方式。我刚得到文本文件,原始数据我必须去实验室检查。但是关于代码,我在linkedlist中得到一个错误,它说“源代码级别低于1.7时不允许使用“”运算符,因为如果我更改了e级它说Android需要5.0或6.0级的编译器遵从性。找到“1.7”而不是是的,我的答案是Java 1.7,我会编辑它以在6@Aubin是的,我已经修好了。但是程序仍然在崩溃。现在不是因为同样的错误,虽然它不能工作,因为规范是错误的,它不能工作,因为规范是错误的