我的文字如下
*~*****|****|**|*|***|***|****|**|null|null|**|***|***|null|71713470|STMS#******
使用java我需要从该字符串中获取数字71713470和STMS值。我已经尝试了所有的字符串方法,但仍然可以。任何人都可以帮忙吗
答案 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)
注意:实际上,Pattern
和Matcher
的技术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];
完成!