【问题标题】:Copy data from a longer array to a shorter array将数据从较长的数组复制到较短的数组
【发布时间】:2018-01-31 02:40:39
【问题描述】:

我只想将某些数据从旧的字符数组复制到新的字符数组。这是我迄今为止所拥有的:

char[] charsInString = s.toCharArray();

int length = 0;
for (int i = 0; i < charsInString.length; i++) {
    if (!(charsInString[i] < 65 || charsInString[i] > 122))
        length++;
}

char[] newCharList = new char[length];
for (int i = 0; i < charsInString.length; i++) {
    // not sure what to do here?
}

我只想要新数组中与字母表中的字母(a、b、c 等)相对应的字符,本质上是复制旧的 char 数组而没有对应于数字、标点符号、空格等的字符。是有什么办法吗?我尝试过同时使用 for 循环和 while 循环,但它不起作用。有什么建议吗?

【问题讨论】:

  • int i = 0; for (char c : charsIntString) if (Character.isAlphabetic(c)) newCharList[i++] = c;

标签: java arrays chars


【解决方案1】:

在转换为字符数组之前从原始字符串中去除所有非字母字符。

String stripped = s.replaceAll("[^a-z]", "");
char[] charsInString = stripped.toCharArray();

但是,此解决方案不是最有效的,除非您的输入字符串很长,否则应该可以忽略不计。

【讨论】:

    【解决方案2】:

    试试这个代码

        String str = " @#$%@##$%$& @#$%#$   alph #$%a#$%# be&*%#@ts";
        char[] charsInString = str.toCharArray();
    
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < charsInString.length; i++) {
            if ((charsInString[i] > 65 && charsInString[i] < 122))
                sb.append(charsInString[i]);
        }
    
        char[] newCharList = sb.toString().toCharArray();
    
        System.out.println(newCharList);
    

    输出:

    alphabets
    

    【讨论】:

      猜你喜欢
      • 2022-01-05
      • 1970-01-01
      • 1970-01-01
      • 2023-03-31
      • 2018-04-14
      • 2012-08-15
      • 1970-01-01
      • 2012-12-09
      • 1970-01-01
      相关资源
      最近更新 更多