Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.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_Regex_String_Split - Fatal编程技术网

在Java中按给定数字拆分字符串

在Java中按给定数字拆分字符串,java,regex,string,split,Java,Regex,String,Split,我有一个这样的字符串:450ZVXX\u OF_INV_CC 3,它基本上由三部分组成:第1列有3位(在本例中为数字450),第2列有30位(在本例中为数字和空格,直到3位)而第3列又有3位 现在我需要使用数字3、30、3将字符串分成三部分(存储在ints中),因为我必须用上述三列构建一个表 我基本上想取int1=3,得到字符串的前3位。然后取int2=30,得到字符串的下30位。然后取int3=3,得到字符串的下3位 仅供参考:长度数字3、30、3是数据库系统预设的列长度 Regex没有用处,

我有一个这样的字符串:
450ZVXX\u OF_INV_CC 3
,它基本上由三部分组成:第1列有3位(在本例中为数字450),第2列有30位(在本例中为数字和空格,直到3位)而第3列又有3位

现在我需要使用数字3、30、3将字符串分成三部分(存储在ints中),因为我必须用上述三列构建一个表

我基本上想取int1=3,得到字符串的前3位。然后取int2=30,得到字符串的下30位。然后取int3=3,得到字符串的下3位

仅供参考:长度数字3、30、3是数据库系统预设的列长度

Regex没有用处,因为我没有用于拆分字符串的任何数字或字符。我将只使用上面解释的预设数字。

编程语言:Java


提前谢谢

您可以使用
String.substring
方法对其进行编码。


这对你有用

public class SubStrings {
  public static void main(String[] args) {
    String abc="123456789101112131415151617181999123";
    Integer first = Integer.parseInt(abc.substring(0, 3));
    BigInteger second = new BigInteger(abc.substring(3, 30));
    Integer third = Integer.parseInt(abc.substring(33, 36));
    System.out.println(first);
    System.out.println(second);
    System.out.println(third);
  }
}

String.substring(0,3)。子字符串(3,30+3)。字符串。子字符串(30+3)正则表达式在这里并不是真正必要的工具@FranMontero在
substring()
方法中必须有逗号(,)而不是点(.)。当然,只要尽可能快地键入它:D@RustamI只是想指出正则表达式可以做到这一点:
(.{3})(.30})(.3})
。但是@FranMontero的注释更好。如果字符串长度小于36,则第三个
子字符串可以抛出
StringIndexOutOfBoundsException
。问题中提供的示例字符串也发生了同样的情况。@abhishekbafna他提供的字符串似乎只是一个例子,因为他提到“第1列有3位”、“第2列有30位”、“第3列有3位”突出显示。@Jan Konrad请澄清问题。有可能少于36位吗?为什么要为这三个部分创建
biginger
对象。
第一个
第三个
仅为3个字符,因此最大值为
999
第二个
输入的一部分不需要一个
数字
。即使示例数据也包含字符和空格
(ZVXX\u OF_INV\u CC)
@abhishekbafna毫无疑问,您已经明白了大整数的含义。但仍然不能确定字符串的可能内容。让提问者回答他想要的
public class SubStrings {
  public static void main(String[] args) {
    String abc="123456789101112131415151617181999123";
    Integer first = Integer.parseInt(abc.substring(0, 3));
    BigInteger second = new BigInteger(abc.substring(3, 30));
    Integer third = Integer.parseInt(abc.substring(33, 36));
    System.out.println(first);
    System.out.println(second);
    System.out.println(third);
  }
}