在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);
}
}