【问题标题】:How to check if a string at a certain position contains character a-h?如何检查某个位置的字符串是否包含字符 a-h?
【发布时间】:2014-03-02 11:57:44
【问题描述】:

我知道肯定有更简单的检查方法,但这就是我现在正在做的。

if (g.charAt(0) == 'a' || g.charAt(0) =='b' || g.charAt(0) =='c' ||
    g.charAt(0) == 'd' || g.charAt(0) =='e' || g.charAt(0) =='f' ||
    g.charAt(0) == 'g' || g.charAt(0) =='h')

【问题讨论】:

  • 您可以将g.charAt(0) 分配给一个变量以至少缩短它。
  • 请记住,字母只是十进制的值:a = 97,b = 104。因此您也可以检查 g.CharAt(0) 是否等于或介于 97 和 104 之间。

标签: java if-statement char


【解决方案1】:

hemanth 答案的变体:

if("abcdefgh".contains(g.substring(0,1))) do_something();

if("abcdefgh".indexOf(g.charAt(0)) >= 0) do_something();

【讨论】:

    【解决方案2】:

    依赖于字符排序和a..h is a consecutive range

    char firstChar = g.charAt(0);
    if (firstChar >= 'a' && firstChar <= 'h') {
       // ..
    }
    

    【讨论】:

    • 不是&amp;&amp;,应该是||
    • @tintinmj 在这种情况下不是,这是对“a 和 h 之间,含”的范围检查。在不应用 DM 的情况下切换到 || 将匹配所有内容:)
    • @tintinmj:换一种方式阅读:if('a' &lt;= firstChar &amp;&amp; firstChar &lt;= 'h')。现在用|| 代替&amp;&amp; 阅读。
    • 糟糕错过了。如果使用了||,那么 z 将是有效的。抱歉评论有误。
    • @tintinmj 事实上所有的角色都是……
    【解决方案3】:

    另一种方法:

    if(Array.asList("abcdefgh".toCharArray()).contains(g.charAt(0)))
    {
      //Logic
    }
    

    【讨论】:

    • 我更喜欢Set 而不是List,因为Setcontains 具有恒定的时间访问权限(基于哈希)。
    • @Makoto True,但是如何将String 转换为Set 而不将其转换为List?我相信我们需要编写自己的方法来做到这一点。
    • 我的意思是你错过了最后一步 - 将其转换为 Set 会使其性能稍好一些。但是随后,您会遇到一个问题,即做一些相当琐碎的事情实际上需要的工作量,而且根本不是大量数据。或者,您可以使用 Guava 做一些事情并使用 Sets.newHashSet('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h').contains(g.charAt(0))
    • "abcdefgh".toCharArray() 不起作用,因为它会生成一个List&lt;char[]&gt;。另外,当然要创建一个静态辅助对象。 Collections.unmodifiableSet(new HashSet&lt;Character&gt;(Arrays.asList('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h')))
    【解决方案4】:

    为此使用正则表达式。将字符串的第一个字符剪切为子字符串,然后匹配它。

    if(g.substring(0, 1).matches("[a-h]") {
        // logic
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-03-31
      • 2016-08-09
      • 1970-01-01
      • 2015-12-25
      • 2020-09-14
      • 2014-05-07
      相关资源
      最近更新 更多