Увеличить строковое значение - PullRequest
3 голосов
/ 23 февраля 2011

Java вопрос здесь: Если у меня есть строка «а», как я могу «добавить» значение к строке, чтобы я получил «б» и так далее? как "а ++"

Ответы [ 6 ]

12 голосов
/ 23 февраля 2011
String str = "abcde";
System.out.println(getIncrementedString(str));

Выход

bcdef

// этот код даст следующий символ в последовательности Unicode

public static String getIncrementedString(String str){
        StringBuilder sb = new StringBuilder();
        for(char c:str.toCharArray()){
            sb.append(++c);
        }
        return sb.toString();
    }
4 голосов
/ 23 февраля 2011

Если вы используете тип данных char примитив, вы можете сделать это:

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

распечатывает b

2 голосов
/ 07 января 2014

я внес некоторые изменения в код te paulo eberman, чтобы обрабатывать цифры и символы, если это полезно для кого-то, кому я поделился с этим модом ....

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();
}

надеюсь, будет кому-то полезен.

1 голос
/ 13 января 2015

используйте этот код для увеличения значения символа на целое число

int a='a';
System.out.println("int: "+a);
a=a+3;
char c=(char)a;
System.out.println("char :"+c);
0 голосов
/ 23 февраля 2011

Если вы хотите что-то вроде aaab => aaac, а не => 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 значения)то же самое, и терпит неудачу (делает странные вещи) для некоторых кодовых точек Юникода вне первой плоскости (которые занимают два значения символов в строке).

Если вы хотите использовать только английские строчные буквы в качестве цифр вы можете попробовать этот вариант:

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 => b => c, y => z => aa =>ab.

, если вы хотите выполнить дополнительные вычисления со строкой, рассмотрите возможность использования StringBuilder (или StringBuffer для многопоточного доступа), а не повторяйте копирование между String и StringBuilder.Или используйте для этого класс, такой как BigInteger.

0 голосов
/ 23 февраля 2011
  • Преобразовать строку в символ.
  • Увеличить чар.
  • Преобразование символа обратно в строку.

Пример:

    //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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...