Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [STRING] Sprawdzanie czy string jest pisany wielkimi literami
kiler129
post 12.06.2010, 00:58:40
Post #1





Grupa: Zarejestrowani
Postów: 566
Pomógł: 35
Dołączył: 21.06.2006

Ostrzeżenie: (0%)
-----


Witajcie!
Kolejne 400 linijek tego wieczoru już za mną gdy natknąłem się na pewien kłopot. Mam ~200MB plik tekstowy z różnymi danymi, muszę wypisać z niego tylko 2 typy danych. Jednym z nich są wszystkie 20 lub 21 znakowe ciągi pisane wielkimi literami (tzw. supercased).
Mogę to załatwić regexem albo na piechotę za pomocą for`a jednakże wydajność będzie koszmarna. O ile doszukałem się w manualu przeróżnych funkcji do konwersji tekstu na różne wielkości liter o tyle nie mogę znaleźć niczego co powiem mi czy tekst jest jak po wyjściu z strupper`a.

Z góry dzięki za pomoc.


--------------------
flexiCMS v2 [|||||||+--] 75% done
Go to the top of the page
+Quote Post
erix
post 12.06.2010, 08:05:40
Post #2





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Jak masz krótki ciąg, to wystarczy:
  1. $data = ...;
  2.  
  3. if($data==strtoupper($data)){
  4. // WIELKIE!
  5. }


Ale to ma tę wadę, że zżera trochę pamięci.

Cytat
Mogę to załatwić regexem albo na piechotę za pomocą for`a jednakże wydajność będzie koszmarna.

Dlaczego? Przecież złożoność pamięciowa będzie minimalna (z tego powodu, że za jednym razem obrabiasz tylko jeden znak), a czasowa też będzie krótko:

  1. $data = fopen('asd', 'r');
  2. $wielkie = true;
  3.  
  4. while(!feof($file)){
  5. $b = fgetc($file);
  6. if($b!=strtoupper($b)){
  7. $wielkie = false;
  8. break;
  9. }
  10. }


sory za brak wcięć, ale nie chce mi się teraz odpalać notepada winksmiley.jpg)

Warunek sprawdzający cyfry sobie sam możesz zrobić. Podejrzewam, że kod byłby jeszcze szybszy, gdybyś zamiast strtoupper użył sprawdzania zakresu ASCII.


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
kiler129
post 13.06.2010, 14:07:42
Post #3





Grupa: Zarejestrowani
Postów: 566
Pomógł: 35
Dołączył: 21.06.2006

Ostrzeżenie: (0%)
-----


To było banalne smile.gif
Faktycznie pierwsza sztuczka zdala egzamin bo linie są krótkie.
Dzięki za pomoc.


--------------------
flexiCMS v2 [|||||||+--] 75% done
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 02:25