首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何检查字符串中是否出现单个字符?

如何检查字符串中是否出现单个字符?
EN

Stack Overflow用户
提问于 2009-02-03 05:38:43
回答 15查看 1.1M关注 0票数 258

在Java中,有一种检查条件的方法:

“此单个字符是否出现在字符串x中”

没有使用循环的的

EN

回答 15

Stack Overflow用户

回答已采纳

发布于 2009-02-03 05:40:36

您可以使用string.indexOf('a')

如果string中存在char a

它返回该对象表示的字符序列中该字符第一次出现的索引,如果该字符没有出现,则返回-1。

票数 328
EN

Stack Overflow用户

发布于 2009-02-03 05:41:42

  • 检查字符串是否包含指定的字符序列values
  • 返回指定字符或子字符串首次出现的字符串内的索引(此方法有4种变体)
票数 156
EN

Stack Overflow用户

发布于 2009-02-03 13:53:56

我不确定最初的发帖者到底在问什么。由于indexOf(...)并包含(...)两者都可能在内部使用循环,也许他想看看在没有循环的情况下这是否可能?我可以随手想到两种方法,一种当然是递归:

代码语言:javascript
复制
public boolean containsChar(String s, char search) {
    if (s.length() == 0)
        return false;
    else
        return s.charAt(0) == search || containsChar(s.substring(1), search);
}

另一个远没有那么优雅,但完备性...:

代码语言:javascript
复制
/**
 * Works for strings of up to 5 characters
 */
public boolean containsChar(String s, char search) {
    if (s.length() > 5) throw IllegalArgumentException();

    try {
        if (s.charAt(0) == search) return true;
        if (s.charAt(1) == search) return true;
        if (s.charAt(2) == search) return true;
        if (s.charAt(3) == search) return true;
        if (s.charAt(4) == search) return true;
    } catch (IndexOutOfBoundsException e) {
        // this should never happen...
        return false;
    }
    return false;
}

当然,当您需要支持越来越长的字符串时,行的数量也会增加。但是根本没有循环/递归。如果您担心length()使用循环,您甚至可以删除长度检查。

票数 36
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/506105

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档