如何在Java中编写一个给定特定模式的正则表达式,在其后面提取值并将其存储在数组中。如果在该模式之后没有值,则应该在数组中添加一个空白(即“”)。
作为模式&&
的示例,我应该得到以下输入和输出:
input=&&&&&&&&&&
o/p=["","","",""];
input=&&A&&123&&B&&985
o/p=["A",123,B,985];
input=&& && &&A&&488
o/p=["","","A","488"]
答案 0 :(得分:1)
您可以在Scanner
上设置分隔符,然后迭代其值。
public String[] getTokens() {
LinkedList<String> list = new LinkedList<String>();
Scanner s = new Scanner(input).useDelimiter("\\&\\&");
while(s.hasNext()) {
list.add(s.next());
}
String[] a = new String[list.size()];
return list.toArray(a);
}
答案 1 :(得分:0)
您可以尝试使用split
。您可以省略第一个结果,并使用以下代码输出中的其余部分。
String testStr = "&&A&&123&&B&&985";
String[] splitString = testStr.split("(&&)");
for (String token : splitString) {
System.out.println(token);
}
答案 2 :(得分:0)
public static void main (String[] args) {
String str = "&&A&&&&&&D&&123&&XX&&";
String delimiters = "([&]{2})";
// analyzing the string
String[] tokensVal = str.split (delimiters);
System.out.print ("[");
for (String token: tokensVal) {
// Print empty and space tokens
if(token.isEmpty () || token.equals (" ")){
System.out.print ("\"\",");
} else {
System.out.print (token + ",");
}
}
System.out.print ("]");
}
O/P ["",A,"",D,]
当只有&amp;在整个字符串中例如“&amp;&amp;&amp;&amp;&amp;&amp;&amp;”然后你必须以特殊方式处理它。
答案 3 :(得分:0)
我很抱歉我不懂Java,但假设它有能力替换和捕获,你可以分两步完成。
首先是替换任何出现的
&&
与
&&\s
其次是迭代从
返回的捕获结果&{2}([^&]+)
并删除任何结果的多余空间