增加字符串值

时间:2011-02-23 13:11:23

标签: java string

Java问题: 如果我有一个字符串“a”,我怎么能“添加”字符串的值,所以我得到一个“b”,依此类推? 比如“a ++”

6 个答案:

答案 0 :(得分:12)

String str = "abcde";
System.out.println(getIncrementedString(str));

<强>输出

  

BCDEF

//此代码将以unicode序列提供下一个char

public static String getIncrementedString(String str){
        StringBuilder sb = new StringBuilder();
        for(char c:str.toCharArray()){
            sb.append(++c);
        }
        return sb.toString();
    }

答案 1 :(得分:4)

如果使用char原语数据类型,则可以完成此操作:

char letter = 'a';
letter++;
System.out.println(letter);

打印出b

答案 2 :(得分:2)

我对te paulo eberman代码进行了一些更改,以处理数字和字符,如果对我共享此mod的人有价值....

public final static char MIN_DIGIT = '0';
public final static char MAX_DIGIT = '9';
public final static char MIN_LETTER = 'A';
public final static char MAX_LETTER = 'Z';

public String incrementedAlpha(String original) {
    StringBuilder buf = new StringBuilder(original);
    //int index = buf.length() -1;
    int i = buf.length() - 1;
    //while(index >= 0) {
    while (i >= 0) {
        char c = buf.charAt(i);
        c++;
        // revisar si es numero
        if ((c - 1) >= MIN_LETTER && (c - 1) <= MAX_LETTER) {
            if (c > MAX_LETTER) { // overflow, carry one
                buf.setCharAt(i, MIN_LETTER);
                i--;
                continue;
            }

        } else {
            if (c > MAX_DIGIT) { // overflow, carry one
                buf.setCharAt(i, MIN_DIGIT);
                i--;
                continue;
            }
        }
        // revisar si es numero
        buf.setCharAt(i, c);
        return buf.toString();
    }
    // overflow at the first "digit", need to add one more digit
    buf.insert(0, MIN_DIGIT);
    return buf.toString();
}

我希望对某人有用。

答案 3 :(得分:1)

使用此代码将char值增加一个整数

int a='a';
System.out.println("int: "+a);
a=a+3;
char c=(char)a;
System.out.println("char :"+c);

答案 4 :(得分:0)

  • 将字符串转换为char。
  • 增加char。
  • 转换字符 回到一个字符串。

示例:

    //convert a single letter string to char
    String a = "a";
    char tmp = a.charAt(0);

    //increment char
    tmp++;

    //convert char to string
    String b = String.valueOf(tmp);
    System.out.println(b);

答案 5 :(得分:0)

假设您需要aaab =&gt;之类的内容aaac而非=&gt; bbbc,这可行:

public String incremented(String original) {
    StringBuilder buf = new StringBuilder(original);
    int index = buf.length() -1;
    while(index >= 0) {
       char c = buf.charAt(i);
       c++;
       buf.setCharAt(i, c);
       if(c == 0) { // overflow, carry one
          i--;
          continue;
       }
       return buf.toString();
    }
    // overflow at the first "digit", need to add one more digit
    buf.insert(0, '\1');
    return buf.toString();
}

这会将所有字符(实际上是char值)视为相同,并且对于第一个平面之外的某些unicode代码点(在String中占用两个char值)失败(对于奇怪的东西)。

如果您只想将英文小写字母用作数字,您可以尝试以下变体:

public final static char MIN_DIGIT = 'a';
public final static char MAX_DIGIT = 'z';

public String incrementedAlpha(String original) {
    StringBuilder buf = new StringBuilder(original);
    int index = buf.length() -1;
    while(index >= 0) {
       char c = buf.charAt(i);
       c++;
       if(c > MAX_DIGIT) { // overflow, carry one
          buf.setCharAt(i, MIN_DIGIT);
          i--;
          continue;
       }
       buf.setCharAt(i, c);
       return buf.toString();
    }
    // overflow at the first "digit", need to add one more digit
    buf.insert(0, MIN_DIGIT);
    return buf.toString();
}

a =&gt; b =&gt; cy =&gt; z =&gt; aa =&gt; ab

如果要对字符串进行更多计算,请考虑使用StringBuilder(或StringBuffer进行多线程访问),而不是在String和StringBuilder之间重复复制。 或者使用一个类来做这个,比如BigInteger。