6 Mayıs 2020 Çarşamba

Character Sınıfı

Giriş
Açıklaması şöyle
A char variable represents a UTF-16 code unit. Its valid values are 0 to 65535 inclusive.
char Primitive Type yazısına göz atabilirsiniz.

Char tipini String'e çevirmek için şunlarda birini yaparız
char c = 'a';

String s1 = String.valueOf(c);
// or
String s2 = Character.toString(c);
constructor - Boxing
Örnek
Şöyle yaparız.
Character cObj = 'a';
Örnek
Şöyle yaparız.
char c = 'a';
Character cObj = c;
constructor - char
Şöyle yaparız.
char c = 'a';
Character cObj = new Character(c);
isBmpCodePoint metodu
Açıklaması şöyle
The isBMPCodePoint() function from the Character class determines whether the specified Unicode character is within the range of the Basic Multilingual Plane (BMP), returning a boolean value accordingly.
Açıklaması şöyle
The Basic Multilingual Plane (BMP) is the first and most commonly used 65,536 code points of Unicode, covering the codes of the characters for nearly all modern writing even across languages, from English to Mandarin and Hindi.
Örnek
Şöyle yaparız
int codePoint = 0x0041; // 'A' in Unicode
boolean isBmpCodePoint = Character.isBmpCodePoint(codePoint); 

// is 'A' within the BMP?
System.out.println(isBMPCodePoint);

// Output: true
codePoints metodu
Şöyle yaparız.
public String escape(final String s) {
  return s.codePoints()
    .mapToObj(codePoint -> codePoint > 127 ?
      "&#x" + Integer.toHexString(codePoint) + ";" :
      new String(Character.toChars(codePoint)))
  .collect(Collectors.joining());
}
codePointAt metodu - CharSequence + index
Belirtilen indeksteki karakterin codepoint değerini verir.
Örnek
Şöyle yaparız.
String toConvert = ...;
int codePoint = Character.codePointAt(toConvert, 0);
digit metodu
Belirtilen radix kullanılarak karakteri sayıya çevirir. Bu metod ile getNumericValue() bence aynı işi yapıyorlar. Eğer girdi rakam değilse veya belirtilen radix ile çevrilemiyorsa -1 döner.
Örnek
Şöyle yaparız.
String number = "153";

return IntStream.range(0, number.length())
  .limit(2)
  .map(i -> Character.digit(number.charAt(i), 10))
  .sum();
forDigit metodu
Şöyle yaparız.
int RADIX = 10;
int value = ...
System.out.print(Character.forDigit(value, RADIX));
getNumericValue metodu
Açıklaması şöyle. Yani 36 tabanındaki rakam ve sayıları çevirebilir.
getNumericValue() only applies to characters that represent numbers, such as the digits '0' through '9'. As a convenience, it also treats the ASCII letters as if they were digits in a base-36 number system (so 'A' is 10 and 'Z' is 35).
Açıklaması şöyle. Diğer karakterler için eksi bir değer döner.
The Character.getNumericalValue(...) methods work for a variety of characters that represent digits or numbers, and it will return -1 or -2 in cases where the character doesn't represent a non-negative integer.
Örnek
Çıktı olarak şunu alırız.
'0' ->  0 // Same as number - '0'
 '9' ->  9 // Same as number - '0'
 'A' -> 10 // Hexadecimal 0xA == 10
 'f' -> 15 // Hexadecimal 0xF == 15
 '³' ->  3 // Unicode superscript 3
 '⒇'-> 20 // Unicode enclosed alphanumeric 20 
 '۵' ->  5 // Persian digit 5
 '*' -> -1 // Doesn't have any corresponding integer value
 '⅚' -> -2 // Even if 5/6 fraction Unicode character is a number, it's not integer
Örnek
Elimizde şöyle bir kod olsun.
double pi = 3.1415;
Sayı olmayanları "" ile değiştirip sayısal değeri almak için şöyle yaparız.
int[] piArray = String.valueOf(pi)
                      .replaceAll("\\D", "")
                      .chars()
                      .map(Character::getNumericValue)
                      .toArray();
Çıktı olarak şunu alırız.
int[] piArray = {3,1,4,1,5};
isEmoji metodu
Character Sınıfı Emoji metodları yazısına taşıdım

isEmojiPresentation metodu
Character Sınıfı Emoji metodları yazısına taşıdım

isDigit metodu
Şöyle yaparız.
char c = ...;
if(Character.isDigit (c)) {...}
isLowerCase metodu
Şöyle yaparız.
for (char c : arr) {
  char ch = Character.isLowerCase(c) ? (char)(219 - c) : c;
}
offsetByCodePoints metodu
Örnek
Şöyle yaparız
String str = "I love 🍿";
StringBuilder sb = new StringBuilder();
for (int i = 0; i < str.length(); i++) {
  char ch = str.charAt(i);
  if (ch > 127) {
    sb.append(String.format("&#x%x;", Character.codePointAt(str, i)));
    i += Character.offsetByCodePoints(str, i, 1) - 1;
  } else {
    sb.append(ch);
  }
}
System.out.println(sb);
Çıktı olarak şunu alırız
I love &#x1f37f;
operator == metodu
Şöyle yaparız.
Character c = ...;
if(c == ' ') {   
  System.out.println("Is space");  
}  
toString metodu
Örnek
Şöyle yaparız.
char c = ...;
String str = Character.toString (c);
Örnek
Unicode karakter ile şöyle yaparız.
Stringy str = Character.toString("\u2192");
UnicodeBlock Alanı
Şöyle yaparız
boolean isHindi = false;
char c = ...;
if (Character.UnicodeBlock.of(c) == Character.UnicodeBlock.DEVANAGARI) {
  isHindi = true;
}

Hiç yorum yok:

Yorum Gönder