java - 检查 Java 正则表达式中的特定字符

标签 java regex

如何检查字符串是否只包含一个特定字符? 例如:

在字符串 square/retrofitsquare/retrofit/issues 上,我需要检查字符串是否有多个 / 字符。

square/retrofit/issues 需要为 false,因为有多个 / 字符,并且 square/retrofit 需要为 true。

字符串可以包含数字。

最佳答案

您不需要正则表达式。简单的 indexOflastIndexOf 方法就足够了。

boolean onlyOne = s.indexOf('/') == s.lastIndexOf('/');

编辑1
当然,如果 / 没有出现在上面给定的字符串中,则为 true。因此,为了避免这种情况,您还可以检查这些方法之一返回的索引是什么。

编辑2
工作解决方案:

class Strings {
    public static boolean availableOnlyOnce(String source, char c) {
        if (source == null || source.isEmpty()) {
            return false;
        }

        int indexOf = source.indexOf(c);
        return (indexOf == source.lastIndexOf(c)) && indexOf != -1;
    }
}

测试用例:

System.out.println(Strings.availableOnlyOnce("path", '/'));
System.out.println(Strings.availableOnlyOnce("path/path1", '/'));
System.out.println(Strings.availableOnlyOnce("path/path1/path2", '/'));

打印:

false
true
false

关于java - 检查 Java 正则表达式中的特定字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54391705/

相关文章:

java - 关系数据库锁定

java - 菱形算法

java - 使用Java以多线程模式进行图像处理

regex - Haskell 和正则表达式与交叉点

android - 正则表达式模式不识别模式

regex - 替换字符串中除最后 4 个字符外的所有字符

c++ - 修改正则表达式以包含逗号

java - 将后端转换为模块。 IE。从 WAR 到 EAR 结构

Java 反射与克隆

ruby - 如何获取ruby中第一个html标签和第二个html标签之间的内容