Arduino String(Dizi) indexOf() ve lastIndexOf() Yöntemi
indexOf ve lastIndexOf Yöntemi. String nesnesi indexOf() yöntemi, bir String’deki belirli bir karakter değerinin ilk örneğini arama olanağı sağlar. Belirli bir ofsetin ardından karakterin ilk örneğini de arayabilirsiniz. lastIndexOf() yöntemi, aynı şeyleri bir String’in sonundan yapmanıza olanak tanır.
String stringOne = "<HTML> <HEAD> <BODY>"; int firstClosingBracket = stringOne.indexOf ('>');
Bu durumda, firstClosingBracket
eşittir, çünkü ilk >
karakter, String’de 5. konumdadır (ilk karakteri 0 olarak saymak). İkinci kapatma braketini almak istiyorsanız, ilkinin konumunu bildiğiniz gerçeği kullanabilir ve ilk ofset olarak firstClosingBracket + 1
arama yapabilirsiniz:
stringOne = "<HTML> <HEAD> <BODY>"; int secondClosingBracket = stringOne.indexOf ('>', firstClosingBracket + 1);
Sonuç 11, HEAD etiketi için kapatma dirseğinin pozisyonu olacaktır.
Dizenin sonundan aramak isterseniz, bunun yerine lastIndexOf()
yöntemini kullanabilirsiniz. Bu işlev, belirli bir karakterin son oluşumunun konumunu döndürür.
stringOne = "<HTML> <HEAD> <BODY>"; int lastOpeningBracket = stringOne.lastIndexOf ('<');
Bu durumda, lastOpeningBracket
eşittir, BODY etiketi için <
konumu. HEAD etiketinin açılış dirseğini isterseniz, stringOne.lastIndexOf('<', lastOpeningBracket -1)
veya 6 olacaktır.
Donanım
- Arduino veya Genuino
“Arduino UNO, elektronik ve kodlamaya başlamak için en iyi tahtadır. Bu, platformla birlikte çalıştığınız ilk deneyiminizse, Arduino UNO, denemelere başlayabileceğiniz en iyi seçimdir. UNO, tüm Arduino ailesinin en çok kullanılan ve içeriği bulunan kartıdır.
Arduino Uno, ATmega328P tabanlı bir mikro denetleyici karttır. 14 adet dijital giriş / çıkış pini (6’sı PWM çıkışı olarak kullanılabilir), 6 analog giriş, 16 MHz kristali, bir USB bağlantısı, bir güç girişi, bir ICSP başlığı ve bir sıfırlama düğmesi vardır. Mikrodenetleyiciyi desteklemek için gereken her şeyi içerir; Başlamak için bir USB kablosuyla bir bilgisayara bağlayın ya da AC-DC adaptörü ya da pille çalıştırın. UNO’yu, yanlış bir şey yapmadan çok fazla endişe etmeden tamir edebilir, en kötü durum senaryosunu değiştirebilirsiniz. Birkaç dolara çip alır ve tekrar kullanabilirsiniz.”
Devre
Bu örnek için devre yoktur, kartınızın USB üzerinden bilgisayara bağlı olması ve Arduino Yazılımının (IDE) seri monitör penceresi açık olmalıdır.
Kod
/* Dize indexOf () ve lastIndexOf () işlevleri Bir String'deki karakterlerin nasıl değerlendirileceğine, arandığına ve değiştirileceğine ilişkin örnekler oluşturuldu 27 Tem 2010 değiştirilme tarihi 2 Nis 2012 Tom Igoe tarafından Bu örnek kod kamu malıdır. http://www.arduino.cc/en/Tutorial/StringIndexOf */ void setup() { // Seri haberleşmeyi açın ve bağlantı noktasının açılmasını bekleyin: Serial.begin(9600); while (!Serial) { ; // bağlanmak için seri portu bekleyin. Sadece yerel USB bağlantı noktası için gerekli } // bir giriş gönderin: Serial.println("\n\nString indexOf() ve lastIndexOf() işlevleri:"); Serial.println(); } void loop() { // indexOf (), belirli bir karakterin konumunu (yani dizin) döndürür // Dize. Örneğin, HTML etiketlerini ayrıştırıyorsanız, bunu kullanabilirsiniz: String stringOne = "<HTML><HEAD><BODY>"; int firstClosingBracket = stringOne.indexOf('>'); Serial.println("dizesindeki > indeksi " + stringOne + " olan " + firstClosingBracket); stringOne = "<HTML><HEAD><BODY>"; int secondOpeningBracket = firstClosingBracket + 1; int secondClosingBracket = stringOne.indexOf('>', secondOpeningBracket); Serial.println("Dizindeki ikinci > indeksi " + stringOne + " olan " + secondClosingBracket); // Dizeleri aramak için indexOf() yöntemini de kullanabilirsiniz: stringOne = "<HTML><HEAD><BODY>"; int bodyTag = stringOne.indexOf("<BODY>"); Serial.println("Dizede gövde etiketinin dizini " + stringOne + " olan " + bodyTag); stringOne = "<UL><LI>item<LI>item<LI>item</UL>"; int firstListItem = stringOne.indexOf("<LI>"); int secondListItem = stringOne.indexOf("<LI>", firstListItem + 1); Serial.println("Dizede ikinci liste etiketinin dizini " + stringOne + " olan " + secondListItem); // lastIndexOf() size bir karakter veya dizenin son durumunu verir: int lastOpeningBracket = stringOne.lastIndexOf('<'); Serial.println("Dizindeki son < indeksi " + stringOne + " olan " + lastOpeningBracket); int lastListItem = stringOne.lastIndexOf("<LI>"); Serial.println("Dizede son liste etiketinin dizini " + stringOne + " olan " + lastListItem); // lastIndexOf() ayrıca bir dize arayabilir: stringOne = "<p>Lorem ipsum dolor sit amet</p><p>Ipsem</p><p>Quod</p>"; int lastParagraph = stringOne.lastIndexOf("<p"); int secondLastGraf = stringOne.lastIndexOf("<p", lastParagraph - 1); Serial.println("Son paragraf etiketinin ikinci dizini " + stringOne + " olan " + secondLastGraf); // true iken hiçbir şey yapmayın: while (true); }
Kaynak:arduino.cc indexOf ve lastIndexOf Yöntemi