回文和感叹号 - Java
Palindromes and exclamation points - Java
我有一个作业要检测一个字符串是否是回文。该程序应该识别非字母数字字符并忽略大小写(例如 "a" 和 "A" 相同)。其中一个字符串是 " ! "
(space, !, space, space) 并且每次我尝试将字符串中的所有内容设置为小写时,“!”由于某种原因被完全删除。我尝试了以下方法:
String string = " ! ";
string = string.replaceAll("[^a-zA-Z]+","").toLowerCase();
//when converted into an array, the array is empty
有办法处理这种情况吗?非常感谢!
编辑:从评论中,我才发现它说的是 "replace anything not in the alphabet"。对于那个很抱歉。我还没有学到很多关于正则表达式的知识,所以我很糟糕。
every time I try to set everything in the string to lower case, the "!" gets completely deleted for some reason.
您写道:
string = string.replaceAll("[^a-zA-Z]+","").toLowerCase();
方法String#replaceAll
(documentation)将所有匹配给定正则表达式的字符替换为给定的字符,你用""
(空文本)进行替换,就是你删除匹配的字符。
正则表达式
[^a-zA-Z]+
匹配 不是 a-z
(a
到 z
) 和 的每个字符A-Z
(A
到 Z
)。 +
符号重复模式,它匹配 1 到无限多个 .
换句话说,这意味着您删除每个非字母字符。这就是为什么您的字符串在替换后为空(_
表示 space
):
Before: _!__
After:
有关正则表达式的详细信息,请查看 regex101/TNfQcO。他们逐字解释这个表达。以下是一些示例,蓝色的所有内容都匹配并将被您的表达式删除:
对于回文,请查看许多等价问题之一,例如
- Check string for palindrome
- Java Palindrome checker
- Java- Palindrome Program
我有一个作业要检测一个字符串是否是回文。该程序应该识别非字母数字字符并忽略大小写(例如 "a" 和 "A" 相同)。其中一个字符串是 " ! "
(space, !, space, space) 并且每次我尝试将字符串中的所有内容设置为小写时,“!”由于某种原因被完全删除。我尝试了以下方法:
String string = " ! ";
string = string.replaceAll("[^a-zA-Z]+","").toLowerCase();
//when converted into an array, the array is empty
有办法处理这种情况吗?非常感谢!
编辑:从评论中,我才发现它说的是 "replace anything not in the alphabet"。对于那个很抱歉。我还没有学到很多关于正则表达式的知识,所以我很糟糕。
every time I try to set everything in the string to lower case, the "!" gets completely deleted for some reason.
您写道:
string = string.replaceAll("[^a-zA-Z]+","").toLowerCase();
方法String#replaceAll
(documentation)将所有匹配给定正则表达式的字符替换为给定的字符,你用""
(空文本)进行替换,就是你删除匹配的字符。
正则表达式
[^a-zA-Z]+
匹配 不是 a-z
(a
到 z
) 和 的每个字符A-Z
(A
到 Z
)。 +
符号重复模式,它匹配 1 到无限多个 .
换句话说,这意味着您删除每个非字母字符。这就是为什么您的字符串在替换后为空(_
表示 space
):
Before: _!__
After:
有关正则表达式的详细信息,请查看 regex101/TNfQcO。他们逐字解释这个表达。以下是一些示例,蓝色的所有内容都匹配并将被您的表达式删除:
对于回文,请查看许多等价问题之一,例如
- Check string for palindrome
- Java Palindrome checker
- Java- Palindrome Program