如何检查某个位置的字符串是不是包含字符 a-h?

Posted

技术标签:

【中文标题】如何检查某个位置的字符串是不是包含字符 a-h?【英文标题】: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 之间。 【参考方案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

【讨论】:

以上是关于如何检查某个位置的字符串是不是包含字符 a-h?的主要内容,如果未能解决你的问题,请参考以下文章

如果单列数据表没有主键,如何检查它是不是包含某个字符串?

javascript如何检查网页元素是不是包含某个特定字符串?

检查命令的输出是不是包含 shell 脚本中的某个字符串

EXCEL VBA判断单元格是不是包含某字符

JS判断字符串变量是不是含有某个字串的方法

JS判断字符串变量是不是含有某个字串的方法