用java中的“ - ”替换每个第n个字符而不使用正则表达式

时间:2017-01-23 18:16:20

标签: java

我正在尝试用一些特殊字符替换字符串中的每个第n个字符,例如“-”,因此基于输入值int nString str),我想要用这个特殊字符替换n(如246)上的所有字符,这样就可以保持字符串的长度,这是我到目前为止所拥有的字符,但它没有产生正确的输出。

public String everyNth(String str, int n) {
      String result="";
      for(int i=0; i<str.length(); i+=n){
            result += " " + str.charAt(i);  
      } 
      return result;
}

3 个答案:

答案 0 :(得分:3)

您可以使用StringBuilder来使用输入String初始化,然后使用setCharAt(int index, char ch)修改给定的字符,这样就可以避免构建新的append(CharSequence s, int start, int end) 1}}在每次迭代时,就像您目前使用String上的运算符+=一样。

类似的东西:

String

注意:public String everyNth(String str, int n) { if (n < 1) { throw new IllegalArgumentException("n must be greater than 0"); } StringBuilder result = new StringBuilder(str); // This will replace every nth character with '-' for (int i = n - 1; i < str.length(); i += n) { result.setCharAt(i, '-'); } return result.toString(); } 开始,除非您想要替换第一个字符,如果这样,则从n - 1开始。

如果您只想删除字符,则应使用{{3}}方法构建目标0的内容,如下所示:

String

答案 1 :(得分:0)

首先,您无法替换Java String。他们是不可改变的。因此,您必须使用正确的属性创建一个新的String。有很多方法可以做到这一点,其中一种方法是迭代原始字符串并复制字符,除非当前索引是n的倍数。 您还可以将String转换为Array并循环遍历数组的每个第n个元素并更改它们。

答案 2 :(得分:0)

你可以使用模数运算符(%)来达到你想要的目的:

public String everyNth(String str, int n){
    StringBuilder sb = new StringBuilder();

    for(int i=0,n=str.length;i<n;i++){
        if(i%n==0){
            sb.append("-");
        else{
            sb.append(str.charAt(i);
        }
     }
     return sb.toString();
  }