如何检查字符串中的所有字符是用java
我想这样的小写,但它输出错误,请帮我如何检查字符串中的所有字符是用java
String inputString1 = "dfgh";// but not dFgH
String regex = "[a-z]";
boolean result;
Pattern pattern1 = Pattern.compile(regex);
Matcher matcher1 = pattern1.matcher(inputString1);
result = matcher1.matches();
System.out.println(result);
你的解决方案是正确的几乎任何数量的字符。正则表达式必须说"[a-z]+"
—包含一个量词,这意味着你不匹配单个字符,而是一个或多个小写字符。需要注意的是尤伯杯正确的解决方案,它匹配以Unicode 任何小写字符,而不仅仅是从英文字母,是这样的:
"\\p{javaLowerCase}+"
此外请注意,您可以用更少的代码实现这一点:
System.out.println(input.matches("\\p{javaLowerCase}*"));
(我在这里替代地使用*量词,这意味着零个或多个选择根据期望的语义。)
谢谢你真的帮助我很多。 – sunleo
使用此图案:
String regex = "[a-z]*";
只有被测试的字符串只有一个字符时,您的当前模式才有效。
请注意它的确如此:它并不真正测试字符串是否小写,但是如果它不包含[a-z]
之外的字符。这意味着它对于小写字符串如"àbcd"
返回false。在Unicode世界中,一个正确的解决方案是使用Character.isLowercase()函数并遍历字符串。
谢谢你的帮助。 – sunleo
如果您不使用英语,这不起作用。考虑到我们会让非英语用户也进来,并试图查看“ålphåbet”是否匹配并得到一个否定,这个答案并不完全正确。 –
@HaakonLøtveit是的。但是我从这个问题(“[a-z]”)中得出结论,OP只对这些角色感兴趣。 –
应该
^[a-z]+$
^
是字符串
$
开始是字符串的结尾
[a-z]+
比赛1到许多小字符
您需要使用量词像*
,它匹配0到很多字符,+
匹配1到多个字符..他们会匹配0或1到前几个字符或范围的多次
谢谢你的帮助。 – sunleo
为什么要用正则表达式?
String inputString1 = "dfgh";// but not dFgH
boolean result = inputString1.toLowerCase().equals(inputString1);
对于短字符串,这是完全正确的;对于较长时间的O(n)空间需求开始显示。 –
@MarkoTopolnik同意,但没有在问题中指定。如果仅仅是代码片段中所示的简单情况,我更喜欢将这种可读性应用于正则表达式 – Robin
可读性在旁观者眼中,对于初学者来说,它可能是一种令人惊讶的方法。如果我使用非正则表达式,我会写一个涉及'Character.isLowerCase(input.charAt(i))'的循环。这是完全明确的和最高性能的。 –
你在找什么?你是否试图检查输入是否只包含字母? – RNJ
'小'他最可能的意思是小写字母或'小写'字母 – jbx
@RNJ我编辑了谢谢你。 – sunleo