拆分字符串得到文本

时间:2016-08-05 06:39:27

标签: java

我的文字如下

*~*****|****|**|*|***|***|****|**|null|null|**|***|***|null|71713470|STMS#****** 

使用java我需要从该字符串中获取数字71713470和STMS值。我已经尝试了所有的字符串方法,但仍然可以。任何人都可以帮忙吗

3 个答案:

答案 0 :(得分:1)

Pattern与群组一起使用以获取字符串的相关部分:

Pattern p = Pattern.compile("\\|(\\d+)\\|STMS#(.*)$");

Matcher m = p.matcher("*~*****|****|**|*|***|***|****|**|null|null|**|***|***|null|71713470|STMS#******");
if (m.find()) {
    System.out.println(m.group(1));
    System.out.println(m.group(2));
}

答案 1 :(得分:0)

注意:实际上,PatternMatcher的技术fabian's using更加正确和优雅,但提供的代码不会返回OP所需的值。

您可以使用String::split(String)。它需要一个正则表达式来分割,所以使用它,[]意味着包含一个......所以把|放在里面会匹配你想要的东西:

String s = "*~*****|****|**|*|***|***|****|**|null|null|**|***|***|null|71713470|STMS#******";
s.split("[|]")[14]

将输出:

71713470

并且

s.split("[|]")[15].split("[#]")[0]

会给你

STMS

答案 2 :(得分:0)

假设您的字符串被称为string
您将使用String#split()方法来执行此操作。

String string = "*~*****|****|**|*|***|***|****|**|null|null|**|***|***|null|71713470|STMS#******";
String[] parts = string.split("[|]"); //escape it as this is a regex character.
int myNumber = Integer.parseInt(args[14]); //only use this if you are sure that the element with the index 14 is a int, otherwise use a for() surrounded by a try-catch-block
String myString = args[15];

完成!