Java:字符串的子串

时间:2018-05-01 20:48:02

标签: java arrays substring

我有这个字符串:

Java                             2              5             22              8

我想要一个带有这些值的字符串数组:

["2"; "5"; "22"; "8"]

有没有办法使用subString()方法才能这样做,还是应该采用其他方法?

5 个答案:

答案 0 :(得分:1)

然而有多少个空格:

String str = "Java    5     22     8";

String[] arr = 
  str
  .replaceAll("( )+"," ")
  .replaceFirst("Java ", "")
  .split(" ");

for (String a : arr) {
  System.out.println(a);
}

答案 1 :(得分:0)

在分割和正则表达式上搜索了一下之后,我找到了答案:line.split("[ ]{2,}")

答案 2 :(得分:0)

您认为"Java"前缀不感兴趣,因此您可以拨打substringtrim(删除4个号码周围的空格):

line.substring(4).trim() // equals "2              5             22              8"

然后,您可以通过一个或多个空格字符split该行。执行此操作的Java正则表达式为"\\s+",因为\\s匹配空白字符,+表示“一个或多个”。

line.substring(4).trim().split("\\s+") // equals ["2", "5", "22", "8"]

答案 3 :(得分:0)

如果你想使用子字符串,这里有一些可能非最佳的解决方案。你从字符串的开头开始,查找第一个数字,而不是继续查找不是数字​​的下一个字符。做之间的子串,然后继续寻找下一个数字。

  while (i<s.length()){
  char c=s.charAt(i);
  if(c>='0'&&c<='9'){
  j=i;
   char c1=s.charAt(j);
  while ((c1>='0'&&c1<='9')&&j<s.length()){ 
      c1=s.charAt(j);
      j++;
      }
  strings[p++]=s.substring(i, j);
   i=j;   
  }else i++;

  }

答案 4 :(得分:-1)

我无法分辨这些是否被空格分隔,但如果是这样,您可以在字符串上使用$value = false; var_dump($value); switch ($value) { case is_int($value): echo "INT"; break; case is_bool($value): echo "BOOL"; break; case is_null($value): echo "NULL"; break; default: echo "DEFAULT"; } 方法。

示例:

.split()