我是java的新手。我想将字符串拆分为以下方式。
假设我已经提供了一个字符串输入,例如样本1 jayesh =10 vyas =13 harshit=10; and so on
作为输入
样本2:harsh=2, vyas=5;
现在我想将jayesh, vyas, harshit from sample 1 and harsh , vyas from sample 2(all this type of strings which are just before the assignment operator)
存储到字符串或字符数组中。
所以有人可以告诉我如何在java中这样做。我知道java中的split方法,但在这种情况下,我必须存储多个字符串。
答案 0 :(得分:4)
您可以使用=\\d+;?
正则表达式
=\\d+;?
匹配=
以及;
个数字作为可选
String s="jayesh =10 vyas =13 harshit=10;";
String[] ss=s.split("=\\d+;?");
System.out.println(Arrays.toString(ss));
输出
[jayesh , vyas , harshit]
要进一步扩展,您可以使用\\s*=\\d+[,;]?\\s*
\\s*
:匹配零个或多个空格
[,;]?
将列表中提及的任何字符匹配为可选
但如果你想在数字之后避免使用任何特殊字符,请使用
\\s*=\\d+\\W*"
:
\\s*=
:匹配零个或多个空格和=
个字符
\\d+
:匹配一个或多个数字
\W*
:匹配零个或多个非单词字符,但a-zA-z0-9_
String s="harsh=2, vyas=5; vyas=5";
String s2 ="jayesh =10 vyas=13 harshit=10;";
String regex="\\s*=\\d+\\W*";
String[] ss=s.split(regex);
String[] ss2=s2.split(regex);
System.out.println(Arrays.toString(ss));
System.out.println(Arrays.toString(ss2));
输出
[harsh, vyas, vyas]
[jayesh, vyas, harshit]
注意:虽然,
和Arrays.toString
数组中没有空格,ss
功能添加ss2
以进行格式化后的空格元件。
Hashset
使用
Set<String> mySet = new HashSet<String>(Arrays.asList(ss));
答案 1 :(得分:0)
你可以使用replaceAll()来获得预期的结果
String stringToSearch = "jayesh =10 vyas =13 harshit=10;";
stringToSearch = stringToSearch.replaceAll("=\\d+;?","");
System.out.println(stringToSearch);
output:
jayesh vyas harshit