LoginSignup
5
3

More than 5 years have passed since last update.

アルファベットを大文字化または小文字化するテクニック

Last updated at Posted at 2018-01-05

TwitterのTLを眺めていたら、論理演算を使ったテクニックが流れて来た。
「なるほど」と思ったので、忘れないためにやってみた。

どのようなテクニックかというと、

  • 大文字のアルファベット AND '_' -> 小文字化
  • 小文字のアルファベット OR ' ' -> 大文字化
  • 任意のアルファベット XOR ' ' -> 大文字なら小文字化, 小文字なら大文字化

といったもの。

lower_upper.c
#include <stdio.h>

#define LOWER_TO_UPPER(c) (c & '_')
#define UPPER_TO_LOWER(c) (c | ' ')
#define SWITCH_UPPER_LOWER(c) (c ^ ' ')

int main(void) {

    // 大文字から小文字
    printf("UPPER_TO_LOWER: %c\n", UPPER_TO_LOWER('A'));
    printf("SWITCH_UPPER_LOWER: %c\n", SWITCH_UPPER_LOWER('Q'));

    puts("");

    // 小文字から大文字
    printf("LOWER_TO_UPPER: %c\n", LOWER_TO_UPPER('a'));
    printf("SWITCH_UPPER_LOWER: %c\n", SWITCH_UPPER_LOWER('q'));

    return 0;
}
実行結果
UPPER_TO_LOWER: a
SWITCH_UPPER_LOWER: q

LOWER_TO_UPPER: A
SWITCH_UPPER_LOWER: Q

なるほど:thinking:

(以下 2018/01/07 0:25追記)

  • 注意点
    • わかりやすく書くためには、'_'や' 'を使わず、2進数や16進数で書く方が良い。
    • 文字数を少なくしたければ10進数を使うと良い。
    • 標準ライブラリにtolower(), toupper()があること。
5
3
8

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
3