有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

在java中,如何以一种简单的方式获取字符串前缀上的所有出现字符?

我有这样一个字符串:'0010'

如何获得该示例字符串的前两个零。这里的规则是,我有一个包含字符的变量。然后我需要查看字符串,如果字符串的第一个字符与变量值相同。我需要保留它,然后如果第二个字符串再次匹配,则连接它,依此类推。如果字符串的第一个字符与变量值不匹配,则它将不会存储,也不会再次查看前一个字符

虽然我已经有了解决方案,但我使用了大约10行代码来实现这一点

这是我的密码:

    String start = "0001";
    String concatVal = "";
    char prefix = '0';

    for(int i = 0; i < start.length(); i++){
        if(start.charAt(i) == prefix){
            concatVal += prefix;
        } else {
            break;
        }
    }
    System.out.println(concatVal);

            //Output
            000

如果有更简单的方法来实现这一点,请让我知道。谢谢


共 (5) 个答案

  1. # 1 楼答案

        String start="0001";
        String concat="";
        String prefix="0";
        for(int i=0;i<start.length();i++){
            if(!prefix.contains(String.valueOf(start.charAt(i)))){
                concat=start.substring(0, i);
                break;
            }
        }
        System.out.println(concat);
    
  2. # 2 楼答案

    看起来不错,一个可能的改变是

    for(char ch : start.toCharArray())
    {
    if(ch == prefix)
    {
       concatVal += prefix; 
    } else {    
       break; 
     }
    }
    
  3. # 3 楼答案

    你的代码已经很简单了。英文描述不短,所以别担心。稍加修改,你会发现:

    public static String prefixOf(String s, char prefix) {
      for (int i = 0; i < s.length(); i++) {
        if (s.charAt(i) != prefix) {
          return s.substring(0, i);
        }
      }
      return s;
    }
    

    这个定义只有四行:

    1. 任何算法都需要方法定义。不算数
    2. 很重要
    3. 很重要
    4. 很重要
    5. 只有一个大括号,可以省略
    6. 只有一个大括号,可以省略
    7. 很重要
    8. 每种方法都必须以右括号结束。不算数

    与你的描述相比,这真的很短

  4. # 4 楼答案

    可以从原始字符串中提取结果

    String text = "0001";
    char prefix = '0';
    String result = text;
    
    for(int i = 0; i < text.length(); i++){
        if(text.charAt(i) != prefix) {
            result = text.substring(0, i);
            break;
        }
    }
    System.out.println(result);
    
  5. # 5 楼答案

    您可以在不逐字符构建结果字符串的情况下执行此操作。而是寻找可能匹配的长度,然后从原始字符串中剪切

    int length = 0;
    while (length < start.length() && start.charAt(length) == prefix) {
        length++;
    }
    String concatVal = start.substring(0, length);