我有一个类似于这个9 $ 1F的字符串,需要检查它是否以数字开头,后跟一个“$”符号,并且应该以十六进制值结尾。
[0-9][\\$][0-9A-Fa-f]
我试过这样的东西,但它失败了,任何人都可以帮助我。
我有一个类似于这个9 $ 1F的字符串,需要检查它是否以数字开头,后跟一个“$”符号,并且应该以十六进制值结尾。
[0-9][\\$][0-9A-Fa-f]
我试过这样的东西,但它失败了,任何人都可以帮助我。
如果必须绝对以数字开头,试试这个:
^\\d\\$[0-9A-Fa-f]+
你可能会使用.matches()
(这要求正则表达式的整个输入字符串相匹配),并且您的正则表达式只有第一个十六进制匹配数字。
尝试
[0-9][$][0-9A-Fa-f]+
相反的[$]
,你也可以使用\\$
。
感谢您的回复,但它给了我一个输入字符串“1 $ 04”的数字格式例外。 – mee 2013-03-06 12:12:27
如果你正在做一个正则表达式匹配,你也可以用它来分割字符串。以下示例将数字和十六进制值转换为两个单独的整数。在9 255
(9
和FF
)
final Pattern pattern = Pattern.compile("([0-9])\\$([0-9A-Fa-f]+)");
Matcher matcher = pattern.matcher("9$FF");
int digit = 0;
int hex = 0;
if (matcher.find()) {
digit = Integer.parseInt(matcher.group(1));
hex = Integer.parseInt(matcher.group(2), 16);
}
System.out.println(digit + " " + hex);
结果
感谢您的答复。但是它给了我一个输入字符串“1 $ 04”的数字格式例外,是的,它应该以一个数字开头,后面跟着“$”,并且应该以十六进制结尾 – mee 2013-03-06 12:19:27
你对比赛做了什么之后呢?显示堆栈跟踪你会得到什么? – 2013-03-06 12:21:46
一旦匹配,我必须将字符串拆分为“$”。我不能粘贴堆栈跟踪,因为它表示一些缩进问题。一旦我完成了缩进,我将编辑我的帖子 – mee 2013-03-06 12:34:57