用Java拆分字符串

用Java拆分字符串,java,Java,可能重复: 我有一个字符串,例如: C: 16896208896 那么如何获得以下输出: 16896208896 子字符串10 为了给出更完整的答案,我们需要更多关于字符串可变性的细节。myStr.split[1] 其中myStr=C:sdg55253522355345 最简单的方法是,假设在数字开始之前总是有10个字符 System.out.println(theString.substring(10)); 如果字符数不同,则类似 System.out.printl

可能重复:

我有一个字符串,例如:

C:        16896208896  
那么如何获得以下输出:

16896208896 
子字符串10

为了给出更完整的答案,我们需要更多关于字符串可变性的细节。

myStr.split[1]

其中myStr=C:sdg55253522355345


最简单的方法是,假设在数字开始之前总是有10个字符

System.out.println(theString.substring(10));
如果字符数不同,则类似

System.out.println(theString.split(" ")[1]);

可以。如果字符串中只有一个数字,这将消除任何字符串中任何数字前后的任意非数字字符

"C:        16896208896  ".replaceAll("^\\D*(\\d+)\\D*$", "$1");
使用正则表达式查找所需内容。如果您不知道数字前有多少空格,这是解决问题的最佳方法。

试试这个

yourString.split("\\s+")[1];


或者使用regexp完全过滤出您想要的内容。

最简单的解决方案取决于您的字符串结构:它是否总是像您的示例中那样?然后,您可以从位置2开始获取子字符串,然后修剪它

或者,如果:前面的部分有所不同,请使用split see在:处拆分字符串


如果没有固定的分隔符,事情就会变得更加复杂。您可以使用前面建议的正则表达式来匹配数字部分。

您尝试了什么?你看过String的javadocs了吗?stackoverflow是您第一次尝试的地方吗?System.out.println16896208896;您以前问过一个非常类似的问题:。在询问有关堆栈溢出+1的问题之前,请阅读并三思:我会使用Java 7 Javadoc和忽略空白而不是字符的字符串:\\s+@usoban,您应该养成链接最新Javadoc的习惯。实际上,它是您的字符串。拆分\\s+[1];。System.out.printlntestring.split[1];将返回一个空格。如果字符数不同,我们不能使用类似System.out.PrintLnteString.split:[1].trim;。。?此方法不可取,因为字符串的子字符串与原始字符串的大小相同。检查字符串字段值。检查我的答案,了解一般方法。你的答案可能会占用较少的内存,但从处理时间的角度来看,肯定效率较低,而且不那么直截了当。如果数字的确切起始位置未知,则需要拆分。是的,我明白了。这就是为什么我说这是一种通用方法。在这里使用子字符串是一种硬编码
Pattern pattern = Pattern.compile("\s*(\d+)");
Matcher matcher = pattern.matcher(myString);
matcher.find();
String result = matcher.group(1);
yourString.split("\\s+")[1];
String str = "C:        16896208896"
str.split("        ")[1];
String str = "C:        16896208896"
str.substring(10);