0Pricing
Coding Interview Prep · Ders

Dizeleri Ayrıştırma ve Biçimlendirme

Farklı lehçelerde SUBSTRING, konum bulma, bölme ve büyük-küçük harf dönüşümü.

Dizeleri Ayrıştırma ve Biçimlendirme, CoddyKit'te ücretsiz bir Coding Interview Prep dersidir. Bu, 4 dersinin 3. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Coding Interview Prep öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Coding Interview Prep kursu toplamda 4 dersten oluşur.

Dize İşlevleri Neden Sorulur

Gerçek veriler düzensizdir: bölünmesi gereken tam adlar, çıkarılması gereken e-posta alan adları, kimliklerin içine gömülmüş kodlar ve tutarsız büyük-küçük harf kullanımı vardır. Mülakat yapanlar, metni bir betiğe aktarmadan temizleyip yeniden şekillendirip şekillendiremeyeceğinizi görmek için dize işlemlerini kullanır.

Tarihlerde olduğu gibi işlevler yalnızca sınırlı ölçüde standartlaştırılmıştır; bu nedenle amaç kavramı ve yaygın karşılıklarını bilmektir.

  • Alt dize çıkarma ve konum bulma
  • Birleştirme
  • Bölme ve değiştirme
  • Büyük-küçük harf dönüşümü ve boşlukları kırpma

SUBSTRING ve POSITION

SUBSTRING(s FROM start FOR length), SQL standardındaki biçimdir; veritabanı motorlarının çoğu SUBSTRING(s, start, length) biçimini de kabul eder. Dize konumları 1 tabanlıdır. Bu, 0 tabanlı dillere alışkın programcılar için klasik bir kayma hatası tuzağıdır.

POSITION(sub IN s) (veya STRPOS/CHARINDEX), bir alt dizenin nerede başladığını bulur; bulunamadığında 0 döndürür.

SELECT
  SUBSTRING('INV-2024-042' FROM 5 FOR 4) AS year,   -- '2024'
  POSITION('-' IN 'INV-2024-042')        AS first_dash; -- 4

E-posta Alan Adını Çıkarma

Bu, sık kullanılan uygulamalı bir örnektir. @ işaretini bulun, ardından sonrasındaki her şeyi alın. POSITION ile SUBSTRING işlevlerini birleştirmek taşınabilir yaklaşımdır.

PostgreSQL'de ayrıca, daha okunaklı olan SPLIT_PART(email, '@', 2) işlevini kullanabilirsiniz; bunu deyimsel yanıt olarak belirtmeniz faydalı olur.

-- Portable
SELECT SUBSTRING(email FROM POSITION('@' IN email) + 1) AS domain
FROM users;

-- Postgres idiom
SELECT SPLIT_PART(email, '@', 2) AS domain FROM users;

Lehçeler Arasında Dize Birleştirme

Dizeleri birleştirme işlemi lehçeye duyarlıdır ve mülakat yapanlar karşılıklarını bilmenizi bekler.

  • SQL standardı / PostgreSQL / Oracle: || operatörü.
  • MySQL: CONCAT(a, b, c) (|| operatörü varsayılan olarak mantıksal OR işlemidir).
  • SQL Server: Dizeler için + veya CONCAT().

CONCAT(), NULL değerini boş dize olarak ele alır; || ve + ise genellikle herhangi bir işlenen NULL olduğunda sonucun tamamını NULL yapar. Bu, gözden kaçması kolay bir hata kaynağıdır.

-- Postgres
SELECT first_name || ' ' || last_name AS full_name FROM people;

-- MySQL / SQL Server
SELECT CONCAT(first_name, ' ', last_name) AS full_name FROM people;

NULL Birleştirme Tuzağı

Önceki bölümü izleyen durumda, last_name NULL ise first_name || ' ' || last_name PostgreSQL'de NULL döndürerek adın tamamını yok eder.

Koruyucu çözüm, NULL olabilen parçalarda COALESCE kullanmak veya ayraçla birleştirme yapan CONCAT_WS işlevini kullanmaktır. Bu işlev NULL değerlerini atlar ve ayıracı yalnızca mevcut değerlerin arasına ekler.

-- Safe in Postgres / MySQL
SELECT CONCAT_WS(' ', first_name, last_name) AS full_name FROM people;

-- Or guard each part
SELECT first_name || ' ' || COALESCE(last_name, '') FROM people;

Dizeleri Bölme

"Tirelerle ayrılmış bir koddan üçüncü parçayı çıkarın" ifadesi, dize bölme becerisini sınar. PostgreSQL'in SPLIT_PART(s, delim, n) işlevi n'inci parçayı doğrudan döndürür ve en temiz araçtır.

MySQL'de doğrudan bölme işlevi yoktur; kullanılan kalıp, iç içe SUBSTRING_INDEX işlevleridir: önce ilk n parçayı, ardından bunların sonuncusunu alın.

-- Postgres
SELECT SPLIT_PART('a-b-c-d', '-', 3); -- 'c'

-- MySQL: third part of a-b-c-d
SELECT SUBSTRING_INDEX(SUBSTRING_INDEX('a-b-c-d', '-', 3), '-', -1); -- 'c'

REPLACE, TRIM ve Doldurma

Mülakat yapanların beklediği temel temizleme işlemleri:

  • REPLACE(s, from, to), tüm oluşumları değiştirir.
  • TRIM(s), baştaki ve sondaki boşlukları kaldırır; TRIM(BOTH 'x' FROM s), belirli bir karakteri kaldırır.
  • LPAD(s, len, ch) / RPAD, değeri sabit genişliğe tamamlar; kimlikleri sıfırlarla doldurmak için kullanışlıdır.
SELECT
  REPLACE('555.123.4567', '.', '-') AS phone,   -- 555-123-4567
  TRIM('   hello   ')               AS clean,   -- 'hello'
  LPAD('42', 6, '0')                AS padded;   -- '000042'

Büyük-Küçük Harf Dönüşümü ve Uzunluk

Metni karşılaştırmadan veya gruplamadan önce büyük-küçük harf kullanımını normalleştirmek gerekir. UPPER ve LOWER her yerde kullanılır; INITCAP (PostgreSQL/Oracle), sözcükleri baş harfleri büyük biçime dönüştürür.

LENGTH(s), çoğu motorda karakter sayısını döndürür; ancak dikkatli olun: SQL Server LEN() kullanır ve bazı yapılandırmalarda LENGTH, çok baytlı metinler için bayt sayısını döndürür. ASCII dışı veriler için bu ayrıntıyı belirtin.

SELECT
  LOWER(email)        AS email_norm,
  INITCAP(city)       AS city_pretty,  -- Postgres
  LENGTH(description)  AS chars
FROM places;

LIKE Ötesinde Örüntü Eşleştirme

LIKE yeterince güçlü olmadığında, mülakat yapanlar düzenli ifade bilginizi görmek ister. PostgreSQL, ~ operatörünü ve REGEXP_REPLACE / REGEXP_MATCHES işlevlerini sunar; MySQL'de REGEXP / REGEXP_SUBSTR bulunur.

Örnek olarak, bir telefon dizesinden yalnızca rakamları bırakabilirsiniz. Düzenli ifade, bunu bir dizi REPLACE çağrısı yerine tek satırlık bir ifadeye dönüştürür.

-- Postgres: strip non-digits
SELECT REGEXP_REPLACE('(555) 123-4567', '[^0-9]', '', 'g')
  AS digits; -- '5551234567'

Daha Derin Bir Örnek: Adları Normalleştirme ve Yinelenenleri Ayıklama

Bu, birleştirilmiş bir temizleme görevidir. Adların gereksiz boşluklar ve karışık büyük-küçük harf kullanımıyla geldiğini ve bunun yanlış yinelenen kayıtlara yol açtığını varsayın. Önce normalleştirin, ardından gruplayın.

Boşlukları kırpın, düzenli ifadeyle metin içindeki boşlukları tekilleştirin ve sayım yapmadan önce küçük harfe dönüştürün. Mülakat yapanların ödüllendirdiği çok adımlı akıl yürütme tam olarak budur.

SELECT
  LOWER(REGEXP_REPLACE(TRIM(name), '\s+', ' ', 'g')) AS norm_name,
  COUNT(*) AS occurrences
FROM contacts
GROUP BY 1
ORDER BY occurrences DESC;

Dizeleri Sayılara ve Tarihlere Dönüştürme

Dize sütunları çoğu zaman aslında sayı veya tarih olması gereken değerleri barındırır. CAST(s AS INTEGER) veya PostgreSQL'in kısa biçimi olan s::int dönüştürme yapar, ancak hatalı girdide başarısız olur.

Tarihler için TO_DATE(s, 'YYYY-MM-DD') (PostgreSQL/Oracle), açık bir biçim maskesi kullanarak ayrıştırma yapar. Gün/ay sırasına ilişkin belirsizliği ortadan kaldırdığı için en güvenli yaklaşım budur.

SELECT
  CAST(qty_text AS INTEGER)            AS qty,
  TO_DATE(order_str, 'DD/MM/YYYY')     AS order_date
FROM staging;

Kısa Kontrol

Dize birleştirmede NULL davranışı üzerine düşünün.

Özet: Dizeleri Ayrıştırma ve Biçimlendirme

Mülakata taşımanız gereken temel noktalar:

  • Dize konumları 1 tabanlıdır; SUBSTRING + POSITION, konuma göre çıkarma yapar.
  • || (PostgreSQL), CONCAT (MySQL) veya + (SQL Server) ile birleştirme yapın ve NULL yayılımını unutmayın; CONCAT_WS kullanmayı tercih edin.
  • PostgreSQL'de SPLIT_PART, MySQL'de iç içe SUBSTRING_INDEX kullanarak bölme yapın.
  • REPLACE, TRIM, LPAD, UPPER/LOWER temizleme ve normalleştirme yapar; düzenli ifadeler zor durumları ele alır.
  • Yanlış yinelenen kayıtları önlemek için gruplamadan önce büyük-küçük harf kullanımını ve boşlukları normalleştirin.

Sıkça Sorulan Sorular

“Dizeleri Ayrıştırma ve Biçimlendirme” dersi ücretsiz mi?

Evet — “Dizeleri Ayrıştırma ve Biçimlendirme” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Coding Interview Prep kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Coding Interview Prep kursu toplamda 4 dersten oluşur.

“Dizeleri Ayrıştırma ve Biçimlendirme” dersinde ne öğreneceğim?

Farklı lehçelerde SUBSTRING, konum bulma, bölme ve büyük-küçük harf dönüşümü. Coding Interview Prep ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

Coding Interview Prep öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Coding Interview Prep, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 3. dersidir.

“Dizeleri Ayrıştırma ve Biçimlendirme” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu Coding Interview Prep dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Coding Interview Prep dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. Tarih Aritmetiği ve Aralıklar
  2. Tarihleri Kırpma ve Gruplama
  3. Dizeleri Ayrıştırma ve Biçimlendirme
  4. Saat Dilimleri ve Zaman Damgaları
← Coding Interview Prep Sayfasına Dön