1s, dizideki ilk karakterdir. Yeni Dize İşlevleri

1s, dizideki ilk karakterdir.  Yeni Dize İşlevleri
1s, dizideki ilk karakterdir. Yeni Dize İşlevleri

1C'deki bilgiler şu şekilde temsil edilebilir: bir referans kitabı, bir belge, bir kayıt ...

Bununla birlikte, sonuçta, tüm bu nesneler alanlardan oluşur ve alanlar basit türlerdedir - sayı, dize, tarih. Ve dizeler şeklinde her zaman daha fazla bilgi vardır. Bu nedenle, dizelerle daha sık çalışmalısınız.

Şimdi 1C dilinden dizelerle nasıl çalışabileceğinizi analiz edeceğiz. Buna paralel olarak, otomatik metin analizi için çeşitli seçenekleri deneyelim.

Dize türleri

Dizelerin uzunluğu sınırlı veya sınırsız olabilir. Dize değeri bir öznitelikten alınırsa, bu kısıtlama öznitelik türünde belirtilir.

Dize, forma kullanıcı tarafından girildiyse, form öğesinde "Çok satırlı mod" ve "Gelişmiş düzenleme" onay kutuları olabilir. Birincisi, satırın "Satır sonu 1C (Enter)" karakterlerini içerebileceği anlamına gelir. İkincisi, dizenin TAB gibi başka 1C hizmet karakterleri içerebilmesidir.

Dize, örneğin ReadText() kullanılarak bir dosyadan alınırsa, kodlama da önemli hale gelir - dosyayı okurken kodlamayı (UTF-8, KOI8, vb.) belirtmeniz gerekir.

Servis sembolleri 1C

Birlikte çalışmak özel karakterler numaralandırma Sembolleri 1C kullanılır.

Örneğin, iki kelimeden oluşan bir dize değeri:
TextString = "Birinci satır" + Symbols.PS + "İkinci satır";

Örneğin, metinde satır sonu 1C aranıyor:
Konum = Bul(TextString, Symbols.PS);

Aşağıdaki özel karakterlerle çalışabilirsiniz:

  • CR ve LF
    Satır sonu 1C demek. Genellikle metin dosyalarında bulunur.
    ASCII'deki karakter kodu 0x0D ve 0x0A, Unicode'da ise U+000D ve U+000A'dır.

    1C dilinde Symbols.CR ve Symbols.LF veya Rusça Symbols.VK ve Symbols.PS gibi görünürler. 1C kodunda oluşturulduğunda 1C hattını aktarmak için PS kullanmanız yeterlidir.

Diğer semboller 1C

1C'deki dizeler "fiziksel olarak" Unicode biçiminde kullanılır (Unicode, http://ru.wikipedia.org/wiki/%DE%ED%E8%EA%EE%E4).

Daha önce karakterlerin "kodlanmasına" rastlamadıysanız, kısaca şunu not ediyoruz:

  • Dizelerle çalışırken, bilgisayar harflerin kendisini değil, harflerin rakamlarını kullanır.
  • Çok sayıda "insan" alfabesi olduğundan (İngilizce, Rusça, Yunanca, Çince vb. Ve ayrıca hizmet ve "yazdırılmayan" 1C karakterleri de vardır), bilgisayar alfabelerinin biri Unicode olan birkaç çeşidi vardır. 1C karakterleri içeren tüm diller
  • Unicode alfabesi şuna benzer:
    o Yaygın "yazdırılmayan" hizmet simgeleri 1C
    o Noktalama işaretleri ve matematik
    Sayılar
    İngiliz alfabesi
    o Ekle. Avrupa dillerinde kullanılan İngiliz alfabesinin 1C karakterleri (örneğin, Almanca)
    Yunan alfabesi
    Rus alfabesi
    Ö...

Gerekirse, Unicode'da bulunan tüm 1C karakterlerini 1C dizilerinde kullanmak mümkündür.

İlk olarak, Windows'ta kurulu bir düzeniniz varsa bunları klavyeden yazabilirsiniz (varsayılan olarak, İngilizce ve Rusça genellikle Rusya'da ayarlanır).

İkinci olarak, aşağıdaki yöntemi kullanarak arama yapabilirsiniz:

Üçüncüsü, program kodundan çalışabilirsiniz. Symbol(Digit) işlevi, belirtilen numara ve CharacterCode(String) işlevi, dizedeki ilk harfin karakter numarasını döndürür. Dizede başka bir harfe ihtiyacınız varsa, o zamanCharacterCode(String, LetterNumber).

Örneğin aşağıdaki satıra Ž karakterini ekleyelim:
TextString = "Şehirde iyi bira" + Symbol(381) + "drobinek";
//Sonuç: "Ždrobinek'te iyi bira"

Yerleşik dil 1c'deki 1C 8.3'teki dizeler, ilkel türdeki değerlerdir Astar. Değerler bu türden rasgele uzunlukta bir Unicode dizesi içerir. Dize tipi değişkenler, tırnak işaretleri içine alınmış bir dizi karakterdir.

Örnek 1. Metin içeren bir dize değişkeni oluşturalım.

StringVariable = "Merhaba dünya!";

1s 8.3'te dizelerle çalışmak için işlevler

Bu bölüm, 1'lerde satır değiştirmenizi veya içerdikleri bilgileri analiz etmenizi sağlayan ana işlevleri sağlayacaktır.

StrLength

StrLength(<Строка>) . Parametrede iletilen dizede bulunan karakter sayısını döndürür.

Örnek 2. "Merhaba dünya!" dizesindeki karakter sayısını sayalım.

String = "Merhaba dünya!"; Karakter Sayısı = StrLength(String); Rapor(Karakter Sayısı);

Bu kodu çalıştırmanın sonucu, dizideki karakter sayısını gösterecektir: 11.

Kısaltılmış

Kısa(<Строка>) . Bir dizedeki ilk önemli karakterin solundaki önemsiz karakterleri kırpar.
Önemsiz karakterler:

  • uzay;
  • kırılmaz alan;
  • tablolama;
  • satırbaşı;
  • satır çevirisi;
  • formun çevirisi (sayfa).

Örnek 3. "Barış!" dizesinin sol tarafındaki tüm boşlukları kaldırın. ve ona "Merhaba" dizesini ekleyin.

String = kısalt ("dünya!"); Dize = "Merhaba"+Dize; Bildir(Dize);

Bu kodun yürütülmesinin sonucu, "Merhaba dünya!" dizisinin görüntülenmesi olacaktır.

Kısaltma

kısa(<Строка>) . Bir dizideki ilk önemli karakterin sağındaki anlamsız karakterleri kırpar.

Örnek 4. "Merhaba" ve "dünya!" ifade "Merhaba dünya!"

String = abbr("Merhaba")+" "+abbr("dünya!"); Bildir(Dize);

Kısaltılmış LP

Kısa(<Строка>) . Dizedeki ilk önemli karakterin sağındaki önemsiz karakterleri kırpar, ayrıca dizedeki ilk önemli karakterin solundaki önemsiz karakterleri de kırpar. Bu işlev daha çok yönlü olduğu için önceki ikisinden daha sık kullanılır.

Örnek 5. Karşı taraf adının solundaki ve sağındaki önemsiz karakterleri kaldırın.

Yüklenici = Dizinler.Yükleniciler.Bul Ayrıntılar("TIN", "0777121211"); ContractorObject = Contractor.GetObject(); ContractorObject.Description = Kısaltılmış LP(ContractorObject.Description); ContractorObject.Write();

bir aslan

Bir aslan(<Строка>, <ЧислоСимволов>) . Bir dizgenin ilk karakterlerini alır, karakter sayısı parametrede belirtilir. Karakter sayısı.

Örnek 6. Yapıya izin verin Çalışançalışanın adını, soyadını ve soyadını içerir. Soyadı ve baş harfleri ile dize alın.

İlkAdı = Aslan(Çalışan.Adı, 1); Patronimik Başlangıç ​​\u200b\u200b= Aslan(Çalışan.Patronimik, 1); TamAdı = Çalışan.Soyadı + " " + Adın İlk Adı + "." + Patronimik Başlangıç ​​+ ".";

Haklar

Sağ(<Строка>, <ЧислоСимволов>) . Bir dizgenin son karakterlerini alır, karakter sayısı parametrede belirtilir. Karakter sayısı. Belirtilen karakter sayısı dizenin uzunluğunu aşarsa, tüm dize döndürülür.

Örnek 7. “yyyymmdd” formatındaki bir string değişkeninin sonuna tarih yazalım, tarih içeren bir string alıp type'a çevirelim. tarih.

Dize = " Geçerli tarih: 20170910"; StringDate = Rights(String, 8); Date = Date(StringDate);

Çarşamba

Çarşamba(<Строка>, <НачальныйНомер>, <ЧислоСимволов>) . Parametrede iletilen dizeden bir alt dize alır Astar, parametrede numarası belirtilen karakterden başlayarak BaşlangıçSayısı ve parametreye iletilen uzunluk Karakter sayısı. Bir dizideki karakterlerin numaralandırılması 1'den başlar. BaşlangıçSayısı sıfırdan küçük veya sıfıra eşit bir değer belirtilirse, parametre 1 değerini alır. Karakter sayısı belirtilmezse, dizinin sonuna kadar olan karakterler seçilir.

Örnek 8. String değişkeni dokuzuncu pozisyondan başlayarak bölge kodunu içersin, onu alıp ayrı bir satıra yazmalısınız.

String = "Bölge: 99 Moskova"; Bölge = Ort(Satır, 9, 2);

Sayfa Bul

StrFind(<Строка>, <ПодстрокаПоиска>, <НаправлениеПоиска>, <НачальнаяПозиция>, <НомерВхождения>) . Bir dizgede belirtilen alt dizgiyi arar, bulunan alt dizginin ilk karakterinin konum numarasını döndürür. Bu işlevin parametrelerini göz önünde bulundurun:

  • Astar. Kaynak dizisi;
  • Alt Dizi Arama. İstenen alt dize;
  • Yön Arama. Bir dizgede bir alt dizginin aranacağı yönü belirtir. Değer alabilir:
    • Arama Yönü.Başlangıçtan itibaren;
    • Arama Yönü.Sondan;
  • Başlangıç ​​konumu. Dizede aramanın başlatılacağı konumu belirtir;
  • Giriş numarası. Aranan alt dizenin oluşum sayısını belirtir. kaynak satırı.

Örnek 9. "Merhaba dünya!" "ve" karakterinin son geçtiği konumu belirleyin.

PositionNumber = StrFind("Merhaba Dünya!", "ve", SearchDirection.From End); Bildir(PozisyonNumarası);

Bu kodun yürütülmesinin sonucu, ekranda "ve" sembolünün son geçtiği sayının görüntülenmesi olacaktır: 9.

VReg

VReg(<Строка>) . Belirtilen dizenin tüm karakterlerini 1s 8'den büyük harfe dönüştürür.

Örnek 10. "Merhaba dünya!" dizesini dönüştürün. büyük harfe.

StringVreg = Vreg("merhaba dünya!"); Rapor(StringVreg);

Bu kodun yürütülmesinin sonucu, "HELLO WORLD!" dizisinin görüntülenmesi olacaktır.

HReg

HReg(<Строка>) . Belirtilen dizenin tüm karakterlerini 1s 8'e küçük harfe dönüştürür.

Örnek 11. "HELLO WORLD!" dizesini dönüştürün. küçük harfe.

StringNreg = NReg("Merhaba DÜNYA!"); Rapor(StringVreg);

Bu kodun yürütülmesinin sonucu, "merhaba dünya!" dizisinin görüntülenmesi olacaktır.

TReg

TReg(<Строка>) . Bir dizeyi şu şekilde dönüştürür: her kelimenin ilk karakteri büyük harfe, kelimenin geri kalan karakterleri küçük harfe dönüştürülür.

Örnek 12. "Merhaba dünya!" dizesindeki kelimelerin ilk harflerini büyük yazın.

StringTreg = TReg("merhaba dünya!"); Rapor(StringTreg);

Bu kodun yürütülmesinin sonucu, "Merhaba Dünya!" dizisinin görüntülenmesi olacaktır.

Sembol

Sembol(<КодСимвола>) . Unicode koduna göre bir karakter alır.

Örnek 13. "Merhaba Dünya!" satırına sol ve sağ ekleyin. sembol ★

StringWithStars = Symbol("9733")+"Merhaba Dünya!"+Symbol("9733"); Rapor(StringWithStars);

Bu kod yürütmenin sonucu, "★Merhaba Dünya!★" dizisinin görüntülenmesi olacaktır.

SembolKodu

SembolKodu(<Строка>, <НомерСимвола>) . İkinci parametrede belirtilen konumda bulunan birinci parametrede belirtilen dizeden Unicode karakter kodunu alır.

Örnek 14. "Merhaba Dünya!" Dizisindeki son karakterin kodunu bulun.

String = "Merhaba Dünya!"; KarakterKodu =KarakterKodu(Dize, StrLength(Dize)); Bildir(KarakterKodu);

Bu kodun yürütülmesinin sonucu, "!" Sembolünün kodunun görüntülenmesi olacaktır. — 33.

Boş satır

Boş satır(<Строка>) . Dizenin yalnızca anlamlı olmayan karakterlerden oluşup oluşmadığını, yani boş olup olmadığını kontrol eder.

Örnek 15. Dizenin boş olup olmadığını ve üç boşluktan oluşup oluşmadığını kontrol edin.

Empty = EmptyString(" "); Rapor(Boş);

Bu kodun yürütülmesinin sonucu, "Evet" kelimesinin görüntülenmesi olacaktır (bir boole değerinin dize ifadesi Doğru).

StrDeğiştir

StrDeğiştir(<Строка>, <ПодстрокаПоиска>, <ПодстрокаЗамены>) . Kaynak dizgide arama alt dizgisinin tüm oluşumlarını bulur ve onu değiştirilen alt dizgiyle değiştirir.

Örnek 16. "Merhaba Dünya!" "Dünya" kelimesini "Arkadaşlar" kelimesiyle değiştirin.

String = StrReplace("Merhaba Dünya!", "Dünya", "Arkadaşlar"); Bildir(Dize);

Bu kodun yürütülmesinin sonucu, "Merhaba Arkadaşlar!"

StrNumberRows

StrSatır Sayısı(<Строка>) . Çok satırlı bir dizedeki satır sayısını saymanızı sağlar. 1s 8'de yeni bir satıra geçmek için sembol kullanılır PS(satır besleme karakteri).

Örnek 17. Metindeki satır sayısını belirleyin:
"İlk satır
İkinci çizgi
Üçüncü satır"

Sayı = StrSatır Sayısı("Birinci satır"+Semboller.PS +"İkinci satır"+Semboller.PS +"Üçüncü satır"); Numarayı bildir);

Bu kodun yürütülmesinin sonucu, metindeki satır sayısının görüntülenmesi olacaktır: 3

StrGetString

StrGetString(<Строка>, <НомерСтроки>) . Çok satırlı bir dizide numarasına göre bir dize alır. Satır numaralandırma 1'den başlar.

Örnek 18. Metindeki son satırı alın:
"İlk satır
İkinci çizgi
Üçüncü satır"

Metin = "Birinci Satır"+Karakterler.PS +"İkinci Satır"+Karakterler.PS +"Üçüncü Satır"; LastLine = StrGetLine(Metin, StrSatır Sayısı(Metin)); Bildir(Son Satır);

Bu kodun yürütülmesinin sonucu, "Üçüncü satır" satırının görüntülenmesi olacaktır.

StrNumberOkuma Sayısı

StrNumberGeçme Sayısı(<Строка>, <ПодстрокаПоиска>) . Bir dizede belirtilen alt dizenin oluşum sayısını döndürür. İşlev büyük/küçük harfe duyarlıdır.

Örnek 19. Durumuna bakılmaksızın “c” harfinin “1s ​​8.3 ve 8.2'deki Satır” satırına kaç kez girdiğini belirleyin.

String = "1s 8.3 ve 8.2'deki satırlar"; Oluşum Sayısı = StrOluşma Sayısı(Vreg(String), "C"); rapor(olay sayısı);

Bu kodu çalıştırmanın sonucu, ekranda oluşum sayısını gösterecektir: 2.

Sayfa Başlangıç ​​Kimden

StrBeginsFrom(<Строка>, <СтрокаПоиска>) . Birinci parametrede verilen stringin ikinci parametredeki string ile başlayıp başlamadığını kontrol eder.

Örnek 20. Seçilen karşı tarafın VKN'sinin 1 rakamıyla başlayıp başlamadığını belirleyin. karşı taraf karşı taraflar.

TIN = Yüklenici.TIN; StartsCUnits = StrStartsC(TIN, "1"); If StartsFROM1 Sonra //Kodunuz EndIf;

Sayfa Bitiş Tarihi

StrEndsOn(<Строка>, <СтрокаПоиска>) . Birinci parametrede iletilen dizenin ikinci parametredeki dizeyle bitip bitmediğini kontrol eder.

Örnek 21. Seçilen karşı tarafın VKN'sinin 2 ile bitip bitmediğini belirleyin. karşı taraf dizin öğesinin bağlantısı saklanır karşı taraflar.

TIN = Yüklenici.TIN; İki İle Biter = Str İle Biter (TIN, "2"); If İki İle Bitiyorsa //Kodunuz EndIf;

Sayfa Bölünmüş

StrBöl(<Строка>, <Разделитель>, <ВключатьПустые>) . Bir dizeyi belirtilen sınırlayıcı karakterlere göre parçalara böler ve ortaya çıkan dizeleri bir diziye yazar. İlk parametre orijinal dizgiyi saklar, ikinci parametre sınırlayıcıyı içeren dizgiyi içerir, üçüncü parametre diziye yazıp yazılmadığını belirtir boş satırlar(varsayılan Doğru).

Örnek 22. ";" sembolü ile ayrılmış sayıları içeren bir dizimiz olduğunu varsayalım, diziden bir sayı dizisi elde edin.

Dizgi = "1; 2; 3"; Dizi = StrSplit(Dize, ";"); For Count = 0 By Array.Quantity() - 1 Döngü Denemesi Dizi[Sayı] = Sayı(Ablp(Dizi[Sayı]))); İstisna Dizisi[W] = 0; EndTry EndCycle;

Yürütme sonucunda 1'den 3'e kadar sayıların olduğu bir dizi elde edilecektir.

StrConnect

StrConnect(<Строки>, <Разделитель>) . İkinci parametrede belirtilen sınırlayıcıyı kullanarak bir dizi dizisini ilk parametreden dizinin tüm öğelerini içeren bir dizeye dönüştürür.

Örnek 23. Önceki örnekteki sayı dizisini kullanarak orijinal diziyi elde edin.

For Count = 0 By Array.Quantity() - 1 Döngü Dizi[Sayı] = String(Dizi[Sayı]); Döngü Sonu; String = StrConnect(Dizi, "; ");

8.3.6.1977 sürümünde uygulandı.

Dizelerle çalışmak için işlev kümesini genişlettik. Bunu, dize verilerini ayrıştırmak için size daha gelişmiş araçlar sağlamak amacıyla yaptık. Yeni işlevler, metin analizinin teknolojik görevlerinde kullanışlı ve faydalı olacaktır. Biçimlendirilmiş bir biçimde veri içeren metnin ayrıştırılmasıyla ilgili görevlerde. Bu, ekipmandan alınan bazı dosyaların analizi veya örneğin bir teknolojik günlüğün analizi olabilir.

Yeni işlevlerin gerçekleştirdiği tüm eylemleri daha önce gerçekleştirebilirsiniz. Gömülü bir dilde yazılmış az çok karmaşık algoritmaların yardımıyla. Bu nedenle, yeni işlevler size temelde yeni fırsatlar vermez. Ancak kod miktarını azaltmanıza, kodu daha basit ve anlaşılır hale getirmenize olanak tanırlar. Ek olarak, eylemlerin yürütülmesini hızlandırmanıza izin verirler. Çünkü platformda uygulanan işlevler, yerleşik dilde yazılmış benzer bir algoritmadan elbette daha hızlı çalışır.

Biçim işlevi StrTemplate()

Bu işlev, parametreleri bir dizgede değiştirir. Böyle bir dönüşüme duyulan ihtiyaç, örneğin uyarı mesajları görüntülenirken sıklıkla ortaya çıkar. Bu işlevin sözdizimi aşağıdaki gibidir:

StrŞablon(<Шаблон>, <Значение1-Значение10>)

<Шаблон>parametre temsillerinin yerini alacak dizedir.

<Значение1> , ... <Значение10>- bunlar, gösterimleri dizide ikame edilmesi gereken parametrelerdir (maksimum - on).

Değiştirmeyi gerçekleştirmek istediğiniz şablonda belirli bir yeri belirtmek için, %1, ... %10 biçiminde işaretleyiciler kullanmanız gerekir. Şablonda yer alan işaretçi sayısı ile değerleri içeren parametre sayısı eşleşmelidir.

Örneğin, böyle bir işleci yürütmenin sonucu:

bir satır olacak:

2. satırda veri hatası (Tarih türü gerektirir)

Dize İşlevi StrCompare()

Bu işlev, iki dizgeyi büyük/küçük harf duyarlılığı olmadan karşılaştırır. Örneğin, bunun gibi:

ValueComparison nesnesini kullanmadan önce aynı eylemi gerçekleştirebilirsiniz:

Ancak, yeni işlevi kullanmak daha basit görünüyor. Ayrıca işlev, Value Compare nesnesinden farklı olarak hem ince istemcide hem de web istemcisinde çalışır.

Dize İşlevleri StrBeginsC(), StrEndsTo()

Bu işlevler, bir dizenin belirli bir alt dizeyle başlayıp başlamadığını veya bir dizenin belirli bir alt dizeyle bitip bitmediğini belirler. Bu işlevlerin algoritmasını yerleşik bir dilde uygulamak zor değildir, ancak bunların varlığı, daha temiz ve daha anlaşılır kod yazmanıza olanak tanır. Ve daha hızlı çalışırlar.

Örneğin, If ifadesinde kullanımları uygundur:

StrSplit(), StrJoin() dizeleriyle çalışmak için işlevler

Bu işlevler, dizeyi belirtilen sınırlayıcıya göre parçalara ayırır. Veya tam tersi, seçilen ayırıcıyı aralarına ekleyerek birkaç satırı bir araya getirirler. Teknolojik bir günlük olan günlükleri oluşturmak veya analiz etmek için uygundurlar. Örneğin, bir teknolojik günlük girişini daha fazla analiz için uygun parçalara kolayca ayırabilirsiniz:

Dizelerle çalışma işlevi StrFind()

Eski Bul() işlevi yerine, yeni özellik ek özelliklere sahip olan:

  • Farklı yönlerde arama yapın (baştan sona);
  • Belirtilen konumdan arama yapın;
  • Belirtilen sayıda (ikinci, üçüncü vb.) bir oluşumu arayın.

Aslında, eski işlevin yeteneklerini kopyalar. Bu, eski sürümlerde derlenen modüllerle uyumluluğu korumak için yapılır. Eski Bul() işlevinin artık kullanılmaması önerilir.

Aşağıda, yeni arama yeteneklerinin kullanıldığı bir örnek bulunmaktadır. Geriye doğru arama yapmak, biçimlendirilmiş bir dizenin son parçasına ihtiyacınız olduğunda kullanışlıdır, örneğin, Ad Soyad URL'deki dosya. Ve belirli bir konumdan arama yapmak, dizenin tamamında değil, bilinen bir parçada arama yapmanız gereken durumlarda yardımcı olur.

String, 1C:Enterprise 8 sistemlerindeki ilkel veri türlerinden biridir. astar metin içerir.

Tip Değişken Değerler astarçift ​​tırnak içine alınır. Bu türden birkaç değişken eklenebilir.

Per1 = "Kelime 1" ;
Per2 = "Kelime 2" ;
Per3 = Per1 + " " + Per2 ;

Sonunda Per3önemli olacak" Kelime 1 Kelime 2".

Ayrıca 1C:Enterprise 8 sistemleri, dizilerle çalışmak için işlevler sağlar. Ana olanları düşünün:

GirinDize(<Строка>, <Подсказка>, <Длина>, <Многострочность>) — işlev, kullanıcının bir tür değişkenin değerini belirtebileceği bir iletişim kutusu görüntülemek üzere tasarlanmıştır. Astar. Parametre <Строка> gereklidir ve girilen dizgenin yazılacağı değişkenin adını içerir. Parametre <Подсказка> isteğe bağlı iletişim kutusunun başlığıdır. Parametre <Длина> isteğe bağlı, giriş dizisinin maksimum uzunluğunu gösterir. Varsayılan değer sıfırdır, bu da sınırsız uzunluk anlamına gelir. Parametre <Многострочность> isteğe bağlı. giriş modunu belirtir çok satırlı metin: True - satır ayırıcılarla çok satırlı metin girin; Yanlış - Basit bir dize girin.

Bir dize girilebilir ve Unicode'daki karakter kodunu bilerek:

Sembol(<КодСимвола>) — Kod bir sayı olarak girilir.

Harf= Sembol(1103 ) ; // BEN

Bir karakterin kodunu bulmanızı sağlayan bir ters işlev de vardır.

SembolKodu(<Строка>, <НомерСимвола>) — Belirtilen karakterin Unicode numarasını sayı olarak döndürür.

Metin durumu dönüştürme işlevleri:

VReg(<Строка>) - Bir dizideki tüm karakterleri büyük harfe dönüştürür.

HReg(<Строка>) - Bir dizideki tüm karakterleri küçük harfe dönüştürür.

TReg(<Строка>) - dizenin tüm karakterlerini başlık durumuna dönüştürür. Yani, tüm kelimelerin ilk harfleri büyük harfe, kalan harfler ise küçük harfe dönüştürülür.

Bir dizgede karakter arama ve değiştirme işlevleri:

Bulmak(<Строка>, <ПодстрокаПоиска>) - arama alt dizesinin geçtiği karakter numarasını bulur. Örneğin:

Bul ("Dize" , "göz" ) ; // 4

StrFind(<Строка>, <ПодстрокаПоиска>, <НаправлениеПоиска>, <НачальнаяПозиция>, <НомерВхождения>) — arama alt dizisinin geçtiği karakter numarasını bulur, oluşum numarası karşılık gelen parametrede belirtilir. Bu durumda arama, numarası parametrede belirtilen karakterden başlar. Başlangıç ​​konumu. Dizinin başından veya sonundan arama yapılabilir. Örneğin:

4 Numara Girişi= StrFind( "savunma", "o" , Arama Yönü. İlk, 1 , 4 ) ; // 7

StrDeğiştir(<Строка>, <ПодстрокаПоиска>, <ПодстрокаЗамены>) Kaynak dizgide arama alt dizgisinin tüm oluşumlarını bulur ve onu değiştirilen alt dizgiyle değiştirir.

StrReplace("Dize" , "göz" , "" ) ; // Sayfa

Boş satır(<Строка>) - dizide anlamlı karakterler olup olmadığını kontrol eder. Önemli karakterler yoksa veya hiç karakter yoksa, değer döndürülür Doğru. Aksi takdirde - Yalan.

StrNumberGeçme Sayısı(<Строка>, <ПодстрокаПоиска>) – kaynak dizgide arama alt dizgisinin oluşum sayısını hesaplar.

StrNumberOkuma Sayısı ( "Çalış, çalış ve tekrar çalış", "çalışmak" , "" ) ; // 3

StrŞablon(<Строка>, <ЗначениеПодстановки1>…<ЗначениеПодстановкиN> — parametreleri dizgede sayıya göre değiştirir. Dize şu biçimdeki ikame işaretçilerini içermelidir: "%1..%N". İşaretçilerin numaralandırılması 1'den başlar. Parametre değeri ise Tanımsız, boş dize değiştirilir.

StrPattern ( "Seçenek 1 = %1, Seçenek 2 = %2", "1" , "2" ) ; // Parametre 1= 1, Parametre 2 = 2

Dize dönüştürme işlevleri:

Bir aslan(<Строка>, <ЧислоСимволов>) dizenin ilk karakterlerini döndürür.

Sağ(<Строка>, <ЧислоСимволов>) - dizenin son karakterlerini döndürür.

Çarşamba(<Строка>, <НачальныйНомер>, <ЧислоСимволов>) - bir uzunluk dizisi döndürür<ЧислоСимволов>, bir karakterle başlayarak<НачальныйНомер>.

Kısa(<Строка>) dizedeki ilk önemli karakterin solundaki anlamlı olmayan karakterleri keser.

kısa(<Строка>) - dizedeki son önemli karakterin sağındaki önemsiz karakterleri keser.

Kısa(<Строка>) - dizedeki ilk önemli karakterin solundaki ve dizedeki son önemli karakterin sağındaki anlamsız karakterleri keser.

StrGetString(<Строка>, <НомерСтроки>) – çok satırlı bir dizenin dizesini sayıya göre alır.

Diğer özellikler:

StrLength(<Строка>) - bir dizideki karakter sayısını döndürür.

StrSatır Sayısı(<Строка>) - çok satırlı bir dizedeki satır sayısını döndürür. Bir satır, önceki satırdan yeni satır karakteriyle ayrılmışsa yeni kabul edilir.

StrKarşılaştır(<Строка1>, <Строка2> ) - iki diziyi duyarsız bir şekilde karşılaştırır. İşlev bir nesne gibi çalışır Değerleri Karşılaştırma. İadeler:

  • 1 - ilk satır ikinciden büyükse
  • -1 - ikinci satır birinciden büyükse
  • 0 - dizeler eşitse

StrCompare("İlk satır", "İkinci satır" ) ; // 1

1C sorgularında dizelerle çalışmak için birkaç mekanizma vardır. İlk olarak, dizeler eklenebilir. İkinci olarak, bir diziden bir alt dizi alınabilir. Üçüncüsü, dizeler, desen dahil olmak üzere karşılaştırılabilir. Dizelerle yapabileceğiniz tek şey bu.

Dize ekleme

"+" operatörü, bir sorguya dize eklemek için kullanılır. Yalnızca sınırlı uzunlukta dizeler ekleyebilirsiniz.

Directory.Contractors AS Yükleniciler WHERE'DEN "Ad: " + Yükleniciler.Adı Sütun1 Olarak SEÇİN Yükleniciler.Referans = &Referans

alt dize işlevi

SUBSTRING(<Строка>, <НачальнаяПозиция>, <Длина>)

Nesne modelinden Environment() işlevinin bir benzeri. Substring() işlevi, dize tipi verilere uygulanabilir ve bir parça seçmenize izin verir. <Строки> , bir sayı karakteriyle başlayan <НачальнаяПозиция> (bir dizideki karakterler 1'den numaralandırılır) ve uzunluk <Длина> karakterler. İşlev değerlendirmesinin sonucu, değişken uzunlukta bir dize türüne sahiptir ve şu durumda uzunluk sınırsız olarak kabul edilir: <Строка> sınırsız uzunluk ve parametreye sahiptir <Длина> sabit veya 1024'ten büyük değil.

Dize uzunluğu ikinci parametrede belirtilenden azsa işlev boş bir dize döndürür.

Dikkat! Sınırsız uzunluktaki dizileri sınırlı uzunluktaki dizilere dönüştürmek için SUBSTRING() işlevinin kullanılması önerilmez. Bunun yerine, EXPRESS() atama operatörünü kullanmak daha iyidir.

İşlev Benzeri

String özniteliğinin belirli ölçütleri karşıladığından emin olmamız gerekirse, onu karşılaştırırız:

Directory.Counterparties AS Counterparties FROM'DAN Counterparties.Name AS Column1 OLARAK Counterparties.Name = "Gazprom" SEÇİN

Peki ya daha incelikli bir karşılaştırma gerekirse? Sadece eşitlik veya eşitsizlik için değil, belirli bir kalıba benzerlik için mi? LIKE işlevi tam olarak bunun için yaratıldı.

LIKE - Bir dizenin bir kalıba benzer olup olmadığını kontrol eden bir operatör. SQL'de LIKE'ın analogu.

LIKE operatörü, solunda belirtilen ifadenin değerini, sağında belirtilen şablon dizesiyle karşılaştırmanıza olanak tanır. İfade değeri string türünde olmalıdır. İfadenin değeri şablonla eşleşirse, operatörün sonucu DOĞRU, aksi takdirde YANLIŞ olur.

Şablon dizesindeki aşağıdaki karakterler hizmet karakterleridir ve dize karakterinden farklı bir anlama sahiptir:

  • % (yüzde): herhangi bir sayıda rasgele karakter içeren bir sıra;
  • _ (alt çizgi): rastgele bir karakter;
  • […] (köşeli parantez içinde bir veya daha fazla karakter): köşeli parantez içinde listelenen herhangi bir tek karakter. Bir numaralandırma, aralığın uçları da dahil olmak üzere aralık içindeki herhangi bir karakter anlamına gelen a-z gibi aralıklar içerebilir;
  • [^…] (köşeli parantez içinde, bir veya daha fazla karakterin izlediği bir olumsuzlama işareti): Olumsuzlama işaretinden sonra listelenenler dışındaki herhangi bir tek karakter.

Diğer herhangi bir sembol kendisi anlamına gelir ve herhangi bir ek yük taşımaz. Listelenen karakterlerden birinin kendisi olarak yazılması gerekiyorsa, önüne<Спецсимвол>. Kendim<Спецсимвол>(uygun olan herhangi bir karakter), aynı ifadede şu ifadeden sonra tanımlanır: anahtar kelimeÖZEL SEMBOL.