for loop to find consonants in a string

后端 未结 5 1023
灰色年华
灰色年华 2021-01-28 02:24

Using a for loop, how do I go about making all consonants in a string uppercase?

I think I should do something like this:

    String str = \"fish$\"             


        
相关标签:
5条回答
  • 2021-01-28 02:26

    You can use Character.toUpperCase().

    String vowels = "aeiouAEIOU";
    char[] charArr = str.toCharArray(); //turn the string into char array
    for(int i=0; i<charArr.length; i++) { //for loop
        if(vowels.indexOf(charArr[i]) == -1) { // if not a vowel
            charArr[i] = Character.toUpperCase(charArr[i]); //replace with upper case
        }
    }
    Sting rslt = String.valueOf(charArr); //finally turn the array back to string
    
    0 讨论(0)
  • 2021-01-28 02:33

    use String.contains() method from String API. the followingcode would work for your present input. usually, if you want to find all the consonents, have an char[] of consonents or String with all the consonents and do the check.

    String str = "fish$";     
    String strConsonants = "f, s, h"; 
    String temp="";
    for (int x = 0; x < str.length(); x++){
    temp+= str.charAt(x);   
       if(!strConsonants.contains(temp)) {
        consonentsUCase+=temp.toUpperCase();
       }
       temp="";
    }
    
    0 讨论(0)
  • 2021-01-28 02:36

    I've just written it.

    Output: FiSH$

    Works for any word ! ;)

    API method: printStringWithUpperConsonant

       import java.util.HashSet;
       import java.util.Set;
    
       public class ConsonantUtils {
    
            private Set<Character> vowels = getVowels();
    
            private String analysedString;
    
            public ConsonantUtils(String analysedString) {
                this.analysedString = analysedString;
            }
    
            public static void main(String[] args) {
                new ConsonantUtils("fish$").printStringWithUpperConsonant();
            }
    
            public void printStringWithUpperConsonant() {
                for (int i = 0; i < getAnalysedString().length(); i++) {
                    printChar(getCurrentChar(i));
                }
            }
    
            private char getCurrentChar(int i) {
                return getAnalysedString().charAt(i);
            }
    
            private void printChar(char currentChar) {
                if (isConsonant(currentChar)) {
                    System.out.print(makeCharUpperCase(currentChar));
                }
                else{
                    System.out.print(currentChar);
                }
            }
    
            private Set<Character> getVowels() {
                Set<Character> vowels = new HashSet<Character>();
                vowels.add('a');
                vowels.add('e');
                vowels.add('i');
                vowels.add('o');
                vowels.add('u');
                return vowels;
            }
    
            private char makeCharUpperCase(char character) {
                return Character.toUpperCase(character);
            }
    
            private boolean isConsonant(char currentChar) {
                return !vowels.contains(currentChar);
            }
    
            private String getAnalysedString(){
                return analysedString;
            }
        }
    
    0 讨论(0)
  • 2021-01-28 02:36
    String str = "fish$";   
    String strVowels = "aeiouAEIOU";
    String out = "";
    
    for (Character c : str.toCharArray()) 
    {
        if(!strVowels.contains(""+c))
        {
            out = out + Character.toUpperCase(c);
        }
        else
        {
            out = out + c;
        }
    }
    System.out.println(out);
    
    0 讨论(0)
  • 2021-01-28 02:45

    This works for me:

         List<Character> constants = Arrays.asList('f', 's', 'h');
         String str = "fish$";
    
         for (Character c : constants) {             
               str = str.replace(c, Character.toUpperCase(c));
          }
    
    0 讨论(0)
提交回复
热议问题