【问题标题】:Tell if string contains a-z chars [duplicate]判断字符串是否包含 a-z 字符 [重复]
【发布时间】:2014-07-28 00:39:05
【问题描述】:

我对编程很陌生。我想检查字符串 s 是否包含 a-z 字符。我用:

if(s.contains("a") || s.contains("b") || ... {
}

但是有什么方法可以用更短的代码来完成吗?非常感谢

【问题讨论】:

  • 您的意思是在 a-z 范围内包含 至少一个 个字符,还是在 a-z 范围内包含 个字符?
  • 我相信他的意思是contains("a"),这意味着至少一个。

标签: java string contains


【解决方案1】:

你可以使用正则表达式

// to emulate contains, [a-z] will fail on more than one character, 
// so you must add .* on both sides.
if (s.matches(".*[a-z].*")) { 
    // Do something
}

这将检查字符串是否包含至少一个字符 a-z

检查所有字符是否都是 a-z 使用:

if ( ! s.matches(".*[^a-z].*") ) { 
    // Do something
}

更多关于java正则表达式的信息

http://docs.oracle.com/javase/6/docs/api/java/util/regex/Pattern.html

【讨论】:

  • 澄清一下:这个正则表达式检查字符串是否包含小写的 a-z 字符,如果所有字母字符都是大写的,例如“STACK20”,它将返回 false。
【解决方案2】:

除了正则表达式,假设你真的想知道字符串是否只包含字符,你可以使用Character.isLetter(char) -

boolean hasNonLetters = false;
for (char ch : s.toCharArray()) {
  if (!Character.isLetter(ch)) {
    hasNonLetters = true;
    break;
  }
}
// hasNonLetters is true only if the String contains something that isn't a letter -

来自Character.isLetter(char) 的 Javadoc,

如果Character.getType(ch) 提供的一般类别类型为以下任何一种,则该字符被视为字母:

UPPERCASE_LETTER
LOWERCASE_LETTER
TITLECASE_LETTER
MODIFIER_LETTER
OTHER_LETTER 

【讨论】:

  • Character 类有很多有用的 is...() thx!
【解决方案3】:

使用正则表达式。 Pattern.matches() 方法可以轻松做到这一点。例如:

Pattern.matches("[a-z]", "TESTING STRING a");

如果您需要检查大量字符串,可以在内部编译该类以提高性能。

【讨论】:

    【解决方案4】:

    试试这个

    Pattern p = Pattern.compile("[a-z]");
    if (p.matcher(stringToMatch).find()) {
        //...
    }
    

    【讨论】:

      猜你喜欢
      • 2019-11-22
      • 2020-08-26
      • 2021-02-07
      • 1970-01-01
      • 2018-03-16
      • 2014-06-10
      • 1970-01-01
      • 2014-06-18
      • 1970-01-01
      相关资源
      最近更新 更多