2013-11-07 3 views
2

Мне нужно написать класс, который берет строку текста у пользователя, а отменяет капитализацию, а также строку. Например, если ввести строку Mary had a little lamb.
Результаты будут .BMAL ELTTIL A DAH YRAmОбратная строка и капитализация

Я знаю, что вы можете использовать StringBuilder обратить строковые себя, но я не могу понять, способ обратить вспять капитализацию.

Благодарим за помощь и совет!

+1

Проверьте каждый символ и используйте Character.isUpperCase/или Character.isLowerCase для проверки и отмены капитализации. –

ответ

0

Чтобы «отменить» капитализацию, вам придется перебирать символ String, по характеру и «переворачивать» его. Существует не встроенный способ сделать это (потому что это не то, что никто в реальной жизни никогда не захочет делать :)).

Итак, перебирать струны, получая каждый char по одному, проверить его с Character.isUpperCase() и/или Character.isLowerCase(), а затем переверните его, используя Character.toUpperCase() и/или Character.toLowerCase().

2

Простой метод, который обменивает случай одного символа:

char swapCase(char c) 
{ 
    return Character.isUppercase(c) ? 
      Character.toLowerCase(c) : 
      Character.toUpperCase(c) 
} 

Просто используйте это время вы реверсивный строку, поменяв случай по пути.

+0

Вы, ребята, правы –

0

Вы можете использовать битовую информацию персонажа, чтобы определить, является ли его заглавной. Или вы можете просто использовать метод класса String isUpperCase или isLowerCase.

Так что вам нужно тестирует

if(string.charAt(i).isUpperCase) { 
    string.charAt(i).toLowerCase 
    simplyReverse(string.charAt(i)) 
} 
else 
    simplyReverse(string.charAt(i)); 
0

Я хотел бы сделать это следующим образом:

String str = "Aasdf"; 
StringBuilder sb = new StringBuilder(); 
for(char ch : str.toCharArray()) { 
    if (Character.isLowerCase(ch)) { 
     sb.append(Character.toUpperCase(ch)); 
    } else { 
     sb.append(Character.toLowerCase(ch)); 
    } 
} 
sb.reverse(); 
0

Используйте символ массива:

public static String reverseAndCapitalize(final String input) { 
    final char[] charsInput = input.toCharArray(); 
    final char[] charsOutput = new char[charsInput.length]; 
    for (int i = 0; i < charsInput.length; i++) { 
     final char c = charsInput[i]; 
     final char output = Character.isUpperCase(c) ? Character.toLowerCase(c) : Character.toUpperCase(c); 
     charsOutput[charsInput.length - i - 1] = c; 
    } 
    return new String(charsOutput); 
} 
0

Скопируйте эту строку в новый массив и конвертировать новый массив toUpperCase.

Затем проверьте соответствующие случаи. Если совпадение найдено, просто преобразуйте его в LowerCase.

Псевдо Код:

reverse(String s) { 
    sArray=s.toCharArray(); 
    copy sArray to tempArray; 
    reverse both array; 
    tempArray.toUpperCase(); 
    for(i=0;i<sArray.length; i++) { 
     if(tempArray[i]== sArray[i]) { 
      sArray[i].toLowerCase(); 
     } 
    } 

Этого код для написания кода без использования Струнного строителя.

Смежные вопросы