# Char, lower/upper case

**URL:** <https://discourse.processing.org/t/char-lower-upper-case/32505>\
**Category:** Beginners\
**Created:** [September 29, 2021, 9:26am UTC](https://discourse.processing.org/t/char-lower-upper-case/32505 "2021-09-29T09:26:36Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![CodeMasterX](https://yyz2.discourse-cdn.com/flex036/user_avatar/discourse.processing.org/codemasterx/32/2942_2.png) [@CodeMasterX](https://discourse.processing.org/u/CodeMasterX)\
**Post date:** [September 29, 2021, 9:26am UTC](https://discourse.processing.org/t/char-lower-upper-case/32505/1 "2021-09-29T09:26:36Z")

</div>

Hi!  
Is there a way to check if a char is uppercase / lowercase other than:  
`(char+"").toLowerCase().charAt(0) == char` ?

I saw this method

 ![image](https://canada1.discourse-cdn.com/flex036/uploads/processingfoundation1/original/2X/6/63d2c3884cc3e74279db65d58d07318d59ac95dd.png)  
but it didn’t seem to work.  
I tried using: `println(a.isUpperCase(), isUpperCase(a), a.isUpperCase(int(a)), "etc");`  
but none worked.

What I need:

- a way to check if the input char is upper case (true / false)
- a way to set the CASE of a char (simple using strings, but is it wasteful?)  
( setCase(char c) )
- a way to invert the case of a char ( invertCase(char c) )
- compare if ` char1 == CHAR1` (can use multiple functions)

Thank you!

---

<div class="post-metadata">

**Author:** ![CodeMasterX](https://yyz2.discourse-cdn.com/flex036/user_avatar/discourse.processing.org/codemasterx/32/2942_2.png) [@CodeMasterX](https://discourse.processing.org/u/CodeMasterX)\
**Post date:** [September 29, 2021, 9:47am UTC](https://discourse.processing.org/t/char-lower-upper-case/32505/2 "2021-09-29T09:47:56Z")

</div>

this is my code using strings:

```auto
void setup() {
  String a = "abAB";
  println(a, rem(a,1,2), isUpper("a"), invert('a'),invert('B'));
}
boolean isUpper(String c) {
  return c.equals(c.toUpperCase());
}
char invert(char c) {
  if(isUpper(c+"")) return (c+"").toLowerCase().charAt(0);
  else return (c+"").toUpperCase().charAt(0);  
}
char setCase(String input, boolean upperCase) {
  if(upperCase) return input.toUpperCase().charAt(0);
  else return input.toLowerCase().charAt(0);
}
String rem(String input, int start, int stop) {
  String output = "";
  for(int i = 0; i < input.length(); i++) if(i < start || i > stop) output += input.charAt(i);
  return output;
}

```

---

<div class="post-metadata">

**Author:** ![glv](https://yyz2.discourse-cdn.com/flex036/user_avatar/discourse.processing.org/glv/32/18785_2.png) [@glv](https://discourse.processing.org/u/glv)\
**Post date:** [September 29, 2021, 9:57am UTC](https://discourse.processing.org/t/char-lower-upper-case/32505/3 "2021-09-29T09:57:55Z")

</div>

Hello,

You can write your own custom routines.  
I did this all the time in small embedded systems when a library just [bloated the code](https://en.wikipedia.org/wiki/Code_bloat#:~:text=In%20computer%20programming%2C%20code%20bloat,or%20otherwise%20wasteful%20of%20resources.).  
Take a look at the ASCII table and you will see patterns that you can work with.

```auto
void draw() 
	{}

void keyPressed()
  {
  //if (key >= 0x61 && key <= 0x7A)
  if (key >= 'a' && key <= 'z')
    {
    println(key, "LowerCase");  
    println(char(key + 'A' - 'a'), "UpperCase"); 
    }
  }

```

References:

> **[ASCII](https://en.wikipedia.org/wiki/ASCII)**
>
> ASCII (/ˈæskiː/ (listen) ASS-kee),: 6  abbreviated from American Standard Code for Information Interchange, is a character encoding standard for electronic communication. ASCII codes represent text in computers, telecommunications equipment, and other devices. Most modern character-encoding schemes are based on ASCII, although they support many additional characters.
> The Internet Assigned Numbers Authority (IANA) prefers the name US-ASCII for this character encoding.
> ASCII is one of the IEE...

`:)`

---

<div class="post-metadata">

**Author:** ![GoToLoop](https://yyz2.discourse-cdn.com/flex036/user_avatar/discourse.processing.org/gotoloop/32/86_2.png) [@GoToLoop](https://discourse.processing.org/u/GoToLoop)\
**Post date:** [September 29, 2021, 10:15am UTC](https://discourse.processing.org/t/char-lower-upper-case/32505/4 "2021-09-29T10:15:57Z")

</div>

> [@Flip upper case with lower case](https://discourse.processing.org/t/flip-upper-case-with-lower-case/17013/3):
>
> If we print the binary() form of ASCII letters: println(binary('A', 8), hex('A', 2), (byte) 'A'); // 01000001 41 65 println(binary('a', 8), hex('a', 2), (byte) 'a'); // 01100001 61 97 println(binary('Z', 8), hex('Z', 2), (byte) 'Z'); // 01011010 5A 90 println(binary('z', 8), hex('z', 2), (byte) 'z'); // 01111010 7A 122 exit(); We’re gonna notice the only diff. between an uppercase ASCII letter from its corresponding lowercase is that the 3rd bit of the latter is 1. We can create a CASE\_MA…

---

<div class="post-metadata">

**Author:** ![hotfooted](https://yyz2.discourse-cdn.com/flex036/user_avatar/discourse.processing.org/hotfooted/32/3670_2.png) [@hotfooted](https://discourse.processing.org/u/hotfooted)\
**Post date:** [September 29, 2021, 10:19am UTC](https://discourse.processing.org/t/char-lower-upper-case/32505/5 "2021-09-29T10:19:00Z")

</div>

```auto
void setup() {
  char myChar = 'a';
  
  boolean isLowerCase = Character.isLowerCase(myChar);
  println("is myChar lower case: " + isLowerCase);
  
  myChar = Character.toUpperCase(myChar);
  
  isLowerCase = Character.isLowerCase(myChar);
  println("is myChar lower case: " + isLowerCase);
}

```

edit: isUpperCase isLowerCase toLowerCase toUpperCase are static methods of the class Character and need to be called via it.
