我有一系列项目,如下所示
[1;233,2;345,3;656]
我正在寻找正则表达式来保存我的数组,如下所示
[233,345,656]
所以在分号前丢弃值
[0-9]+;
也许尝试用空字符串替换正则表达式。如果只有一个数字,则不需要 +。在单个数字的情况下,找到一个分号,删除它和前面的字符也可能更容易。
replaceAll("\d;" ,"")
如果您的位数不固定为一位并且可以更改,您可以使用\d+
那会是这样的:
;([^,;]+)$1
这意味着至少一个分号作为起始字符,然后是一个或多个既不是分号也不是逗号的字符。最后,它仅将分号右侧的部分标记为所需结果。
我不确定这是 Java 的语法,特别是。我更像是一个 .NET 人。但你可以从那里开始工作。
如果您的数组是用整数键入的,则正则表达式超出范围。您应该考虑创建一个新数组,其整数值优于 99(3 位整数)。
但是,如果您的数组包含字符串,这是您想要的正则表达式:
Pattern yourPattern = Pattern.compile("(?<=\\D)\\d{1,2}(?=\\D)");
// this will find 1 or 2 digit numbers preceded and followed by anything but a digit
编辑:对于正则表达式解决方案,我假设我们正在讨论数组的字符串表示。因此检查非数字字符。相反,如果您正在迭代一个字符串数组,那么您可能会使用Integer.valueOf("12")
并将 if 与 int 值 99 进行比较。也就是说,如果您确定您的字符串将始终表示一个整数(否则处理一个 NumberFormatException)。
您可以将您的数组字符串拆分为,得到一对,然后拆分为; 找到数字。
PHP:
$string= "[1;233,2;345,3;656]";
$temp=explode(",", $string); //to get couples like 1;233
print_r($temp);
$result=array();
for($i=0; $i<count($temp);$i++){
$temp1=explode(";", $temp[$i]);
array_push($result,$temp1[1] );//take second value 233
}
print_r($result);
输出:$couple_array:Array ( [0] => [1;233 [1] => 2;345 [2] => 3;656] )
输出:$数组:Array ( [0] => 233 [1] => 345 [2] => 656] )
爪哇:
String str = "[1;233,2;345,3;656]";
String[] temp = str.split(",");//to get couples like 1;233
int size=temp.length;
String[] result=new String[size];
for(int i =0; i < size ; i++){
String[] temp1=str.split(";");//take second value 233
result[i]=temp1[1];
}