# Common String Functions in Dynamics 365 X++ with Examples

Dynamics 365 Finance and Operations (D365 FO) geliştiricileri için metin (string) işlemleri, günlük geliştirme süreçlerinin vazgeçilmez parçalarındandır. Kullanıcı girdilerini kontrol etmek, verileri parçalara ayırmak veya formatlamak gibi birçok senaryoda bu işlemler karşımıza çıkar.

Bu yazıda, X++ dilinde sıkça kullanılan bazı temel metin komutlarını ve bunların pratik örneklerini inceleyeceğiz:

---

## 🔹 `strFmt`

Belirli bir format içerisinde birden fazla değeri birleştirmek için kullanılır.

```csharp
str name = "Ahmet";
int age = 30;
str result = strFmt("Ad: %1 - Yaş: %2", name, age);
// Sonuç: "Ad: Ahmet - Yaş: 30"
```

Özellikle bilgi mesajları, log kayıtları ya da çıktılar oluştururken hayat kurtarır.

---

## 🔹 `strlen`

Bir metnin uzunluğunu döner.

```csharp
str text = "Dynamics365";
int length = strlen(text);
// Sonuç: 11
```

Boş mu değil mi kontrolü yaparken veya maksimum karakter sınırlamalarını aşmamak için kullanılır.

---

## 🔹 `strFind`

Bir metin içinde, başka bir metnin yerini (başlangıç indeksini) bulur.

```csharp
str fullText = "Dynamics365";
int index = strFind(fullText, "365", 1, strlen(fullText));
// Sonuç: 9
```

Bulunamazsa `0` döner. Özellikle doğrulama veya ayrıştırma işlemlerinde faydalıdır.

---

## 🔹 `subStr`

Bir metnin belirli bir bölümünü almak için kullanılır.

```csharp
str text = "Dynamics365";
str part = subStr(text, 1, 8);
// Sonuç: "Dynamics"
```

Genellikle sabit formatlı metinleri ayrıştırmak için kullanılır (örneğin fatura numaralarından tarih çekmek).

---

## 🔹 `strDel`

Bir metinden, belirli bir aralıktaki karakterleri siler.

```csharp
str text = "Dynamics365";
str result = strDel(text, 9, 3);
// Sonuç: "Dynamics"
```

Bu örnekte 9. karakterden başlayarak 3 karakter silindi. Genellikle istenmeyen karakterleri temizlemek için idealdir.

---

## 🔹 `strSplit`

Bir metni, belirli bir ayırıcıya göre parçalara ayırır. X++ içinde `strSplit` metodu `Global` sınıfında yer alır.

```csharp
List parts = strSplit("Ahmet,Mehmet,Ayşe", ",");
ListEnumerator enumerator = parts.getEnumerator();
while (enumerator.moveNext())
{
    info(strFmt("İsim: %1", enumerator.current()));
}
```

Sonuç:

```csharp
İsim: Ahmet  
İsim: Mehmet  
İsim: Ayşe
```

CSV ayrıştırma, isim-soyisim ayırma gibi işlemlerde oldukça kullanışlıdır.

---

## 🎯 Gerçek Hayattan Senaryo Örneği

```csharp
str fullName = "Çetin, Bayram";
List nameParts = strSplit(fullName, ",");
str surname = strLTrim(nameParts.get(1));
str name = strLTrim(nameParts.get(2));

info(strFmt("Ad: %1 - Soyad: %2", name, surname));
```

Bu örnekte kullanıcıdan gelen "Soyad, Ad" formatındaki veri doğru şekilde parçalanıyor ve ekrana düzgün bir şekilde yazdırılıyor.

---

## 📝 Sonuç

Metin işlemleri Dynamics 365 projelerinde küçük ama kritik roller üstlenir. `strFmt`, `strFind`, `strDel`, `strSplit` gibi komutlar sayesinde karmaşık veri işleme ihtiyaçları bile basit çözümlerle karşılanabilir. Bu fonksiyonları iyi bilmek, hem kod kalitesini artırır hem de daha okunabilir ve yönetilebilir çözümler üretmemizi sağlar.
