2015-03-19 4 views
-2

Предположим, у меня есть строка s1 = "abcd";Как увеличить число символов в строке (Java)

вывод должен быть s1 = "abca";

Я хочу уменьшить/увеличить последний символ в строке, чтобы он соответствовал первому символу строки. Поскольку String не позволяет изменять данные Как я могу это достичь.

ответ

2

Поскольку, как вы отметили, String является неизменным, вам необходимо выполнить задание. Я бы сделал substring(), а затем объединил первую букву. Что-то вроде

String s1 = "abcd"; 
s1 = s1.substring(0, s1.length() - 1) + s1.charAt(0); 
System.out.println(s1); 

Выхода есть (по запросу)

abca 

JLS-4.2.1. Integral Types and Values делает документ, который char является интегральным типом. Это позволяет сделать что-то вроде

public static String modifyCharInString(String in, int index, int ammount) { 
    if (in == null || in.isEmpty() || index < 0 || index >= in.length()) { 
     return in; 
    } 
    StringBuilder sb = new StringBuilder(in); 
    sb.setCharAt(index, (char) (in.charAt(index) + ammount)); 
    return sb.toString(); 
} 

И тогда вызов это как

public static void main(String[] args) { 
    String s1 = "abcd"; 
    s1 = modifyCharInString(s1, s1.length() - 1, -3); 
    System.out.println(s1); 
} 

Выход есть (опять же)

abca 
+0

На заднем конце она должна работать как ABCD -> ABCC -> ABCB -> ABCA –

+0

@AbhyudheySharma Что это значит? Вам нужен алгоритм, который может уменьшить произвольный символ в 'String'? Потому что ваш пример, и ваш заголовок, и ваш комментарий очень сбивают с толку. –

+0

Извините за недоразумение Да, мне нужен алгоритм, который может уменьшить произвольный символ в строке. Thanx заранее! –

0

Для редактирования строк можно использовать StringBuilder класс. Это позволяет повысить производительность, чем использовать substring().

String oldString = "abcd"; 
    StringBuilder sb = new StringBuilder(oldString); 
    sb.setCharAt(sb.length() - 1, sb.charAt(0)); 
    String newString = sb.toString(); 
Смежные вопросы