我需要从java中给定的字符串打印第1个字符和第5个字符

时间:2019-05-22 05:29:23

标签: java

我有一个长度超过1000个字符的字符串。在此字符串中,我必须在第5个字符之后打印第1个字符。

我尝试编写一个程序以从第0个字符迭代到最后一个字符并具有一个count变量。

如果count等于5。我正在打印字符,并且count初始化为0。

private static String getMaskedToken(String token) {
    if (token == null)
        return null;
    char[] charArray = token.toCharArray();
    int length = token.length();
    StringBuilder sb = new StringBuilder();
    int count = 0;
    for (int i = 0; i < length; i++) {
        count++;
        if (i == 0 || i == length - 1) {
            sb.append(charArray[i]);
        } else if (count == 5) {
            sb.append(charArray[i]);
            count=0;
        } else if(count < 5 && i == length-1){
            sb.append(charArray[i]);
        }else {
            sb.append('*');
        }
    }
    return sb.toString();
}
  

如果计数少于最后5个字符,则需要打印最后一个字符   迭代。

     

如果字符串的长度为9,"12345678",则实际输出将类似于   1***5**8

     

如果字符串的长度为9,"123456789abcd",则实际输出为   像1***5****a**d

4 个答案:

答案 0 :(得分:2)

    String output = "";
    for (int i = 0; i < str.length(); i++) {
        if (i == 0) {
            output += str.charAt(i);
            output += "***";
            output += str.charAt(4);
            i = 4;
        } else if ((i - 4) % 5 == 0) {
            output += str.charAt(i);
        } else if (i == str.length()-1) { 
            output += str.charAt(i);
        } else {
            output += "*";
        }
    }
    System.out.println(output);
}

这将为字符串“ 123456789abcd”打印1 *** 5 **** a ** d。

答案 1 :(得分:0)

尝试此代码,

private void printEvery5thCharacter(String str) {
    for (int i = 1; i < str.length() - 1; i += 5) {
        System.out.print(str.charAt(i - 1) + "***");
        if (i == 1) {
            i = 0;
        }
    }
    if (str.length() % 5 > 0) {
        System.out.print(str.charAt(str.length() - 1));
    }
 }

答案 2 :(得分:0)

尝试此代码:

public void printFirstAndEveryFifthCharecter(String str) 
{
    for (int i = 0 ; i < str.length() ; i++) 
    {
       if ((i+1) == 1 | (i+1) % 5 == 0) {
          System.out.print(str.charAt(i) + "***");
       }
    }
    if (str.length() % 5 > 0) {
       System.out.print(str.charAt(str.length() - 1));
    }
 }

答案 3 :(得分:0)

您的代码应该可以正常工作。这是不使用StringBuilder且检查较少的一种选择。

private static String getFirstFifthLast(String str) {
    String[] strArray = str.split(""); //returns an array of strings with length 1
    int arrayLength = strArray.length;
    String result = strArray[0]; //append the first element
    //append element if it is in 5th position, append "*" otherwise
    for (int i = 0; i < arrayLength; i++) {
        if ((i + 1) % 5 == 0) {
            result += strArray[i];
        } else {
            result += "*";
        }
    }
    result += strArray[arrayLength - 1]; //append the last element
    return result; 
}