【问题标题】:How to find if a String in an ArrayList contains a digit in as a char如何查找ArrayList中的字符串是否包含字符中的数字
【发布时间】:2023-03-09 05:45:01
【问题描述】:

有一个HashMap 有id 和name。名称有一些限制。符合条件的字符串应添加到ArrayList

i) 第一个字符应该小,最后一个字符应该是大写。
ii) 名称中至少应有一位数字。

例如:ravi5raJ


public static ArrayList<String> getName(HashMap<Integer,String> map) {
    ArrayList<String> a1=new ArrayList<String>();

    for (Integer key: map.keySet()) {
        int size=map.get(key).length();
        String name= map.get(key);
        int count=0;
        if(name.substring(0, 1)== name.substring(0, 1).toLowerCase())
        {
            if(name.substring(size-1, size-1)==name.substring(size-1, size-1).toUpperCase())
            {
                for (int i = 0; i < size ; i++) {
                    //logic to check for int
                    a1.add(name);
                }
            }

        }
    }

    return a1;
}

【问题讨论】:

  • 还有什么是你不知道怎么做的?你试过什么? ...
  • 在 Java 中比较字符串的相等性时,请使用 myString1.equals(myString2) 而不是 == 运算符,因为 String 是一个对象,而不是像 int 或 char 这样的原始数据类型。
  • 是的,我尝试将字符串中的每个字符解析为 int。在匹配过程中,即使有一个 int 类型的匹配,我也会将它添加到 ArrayList

标签: java regex string arraylist hashmap


【解决方案1】:

我认为您可以使用简单的正则表达式来测试所有内容:

if( name.matches( "[a-z].*?\\d.*[A-Z]" ) ){ ...

【讨论】:

  • 谢谢你在工作时我花了 1 个小时来处理这个问题,并没有想到正则表达式。我想我迷路了。
【解决方案2】:

它现在工作得很好。

  public static ArrayList<String> getName(HashMap<Integer,String> map) {
            ArrayList<String> a1=new ArrayList<String>();

            for (Integer key: map.keySet()) {
                int size=map.get(key).length();
                String name= map.get(key);
                int count=0;
                if( name.matches( "[a-z].*?\\d.*[A-Z]" ) )
                    a1.add(name);

            }
            return a1;
        }   

【讨论】:

    猜你喜欢
    • 2019-03-03
    • 2016-03-25
    • 2017-08-29
    • 2014-10-07
    • 1970-01-01
    • 2021-05-18
    • 1970-01-01
    • 2021-11-10
    • 1970-01-01
    相关资源
    最近更新 更多