Разделяне на стринг на под стрингове

8 отговора 353 прегледа
#1

Разделяне на стринг на под стрингове

Здравейте!
Имам някакво скромно желание да си разделя някакъв тъп стринг на толкова под стрингове колкото пъти се срещне определен символ в стринга, но по вазможност с готова функция без аз да се гърча много. В javascript имаше няканъв сплит който го правеше и ми слагаше под стринговете в масивче.
Тука дали не се намира нещо такова щото си търся в жалкият хелп на делфито от любов към спорта и не намирам и си търся и не намирам и си тъ.......

Отговор
в отговор на MasterAdmin #2

Re: Разделяне на стринг на под стрингове

const Max = 100;
var S: String;
i : Integer;
ArrS : Array[0..Max] of String;
begin
for i:= 1 to Length( S ) do
begin
ArrS := Copy( S, i , 1 )
end;

end;

Отговор
в отговор на MasterAdmin #3

Re: Разделяне на стринг на под стрингове

Виж в help-a за TStrings.DelimitedText. Честно казано, мързи ме да давам пример, но ако не се справиш ще се напна...

чети и дишай по-леко
Отговор
в отговор на MasterAdmin #4

Re: Разделяне на стринг на под стрингове

Вж. [линк]

Отговор
в отговор на MasterAdmin #5

Re: Разделяне на стринг на под стрингове

Здрасти. И аз като тебе имах подобен проблем. Ако решенията на останалите не ти харесват (все пак говориш за масив, а те ти дават решения за разни LIST) можеш да ползваш една от моите функции (свободни без ограничения ; Двете предимства са :
работи с масив от низове
работи с произволно дълъг разделител
Ако производителността ти е важна, можеш да го напаснеш да работи и със FastStrings библиотеката.

_________________________________________
function split(Niz:String;const Dividor:String): arrstr;
var
i: integer;
RazdDylv: integer;
LastInResult:Integer;
RezLength:Integer;
const SrednaDylvina=10; // TRUDNA za izmislqne default stojnost :)

begin
RazdDylv := Length(Dividor);
if (RazdDylv = 0) then
begin
exit; // prazen whod = prazen izhod :P
end;
RezLength:=(Length(niz) div SrednaDylvina) +1 ;
setlength(Result, RezLength);
LastInResult:=-1;
while (length(Niz) > 0) do
begin
inc ( LastInResult);
if RezLength<LastInResult+1 then
begin
RezLength := RezLength shl 1;
SetLength(Result,rezLength);
end;
i := pos(Dividor, Niz);

if i > 0 then
Result[LastInResult] := copy(Niz, 1, i - 1)
else
Result[LastInResult] := Niz;
if i > 0 then
Niz := copy(Niz, i + razddylv, length(Niz))
else
Niz := '';
end;
SetLength(Result,LastInResult+1);
end;
________________________________________

Има 10 вида хора: такива, които разбират двоичната система и такива, които не я разбират
Отговор
в отговор на nACTA_3A_3b6u #6

Re: Разделяне на стринг на под стрингове

Abe, chovek, ili si pishi imenata na promenlivite na balgarski, ili na angliiski, no ne i dvete ednovremenno .... vse pak, po-dobre na angliiski :)

Отговор
в отговор на MasterAdmin #7

Re: Разделяне на стринг на под стрингове

Благодаря на всички които ми отговориха.
Проблема е не че не мога да си го направа а главно че хелпа на борланд е супер тъп.
В линукс това става супер лесно и удобно.
Очаквам обаче линукса да се вдърви след като от борланд са направили
"кайликс" с който да внедрят гърчовете на уиндолс в линукс.

Отговор
в отговор на MasterAdmin #8

Off Topic:

Лично мение - в сравнение с MSDN -а хелпа на Borland (става дума за всичките продукти - а не конкретно делфи) е направо приказка - ако знаеш как да търсиш, ще го намериш - докато при макрософците - ще те затрупат с 1000 несвързани към търсенето неща!! И въобще съм забелязал, че на много малко хора им се отдава да търсят нещо - въобще - не става дума конкретно за хелп-ове - ами интернет и прочие ;-))) - надявам се да не го възприемеш като лична обида - знаеш, че има различни видове хора - някои могат да пеят други да рисуват и прочие ......

Ако нещо не ти харесва не го използвай - конкретно Kylix -a - ами си ползвай други компилатори за Линукс - те обаче рядко вървят с толкова подробен хелп.
Да не говорим за библиотеки - май има само 1 който може да му е конкурент - и то за визуалната част от програмирането - за бази данни, програмиране за Инет и други не говоря ;-))) За крос платформено програмиране още по малко -прехвърлянето на програма си е малък ад от Вин на Линукс или обратно.

---
Е т'ва е живот!
Отговор
в отговор на MasterAdmin #9

Re: Разделяне на стринг на под стрингове

Borland po-princip sa po-zle sus support-a. Za shtastie obache ima klubove kato nashia, kudeto horata s po-razvit murzel mogat da popitat, a dosta chesto i da poluchat otgovor.
Za lesnoto i trudnoto - na edni im e lesno da cepiat durva, na drugi - da pishat kod, na treti - da administrirat Linux. Zavisi ot glednata tochka i ot vuzmoznostite na vseki chovek.
Pak v tozi duh moze da otbelezim, che vdurviavaneto na Linux, Windows, Palm OS i prochee e suvsem otnositelno - zavisi ot tova dali chovek iska da si sglobiava sam OS-a, da play-va games, da ne plashta za software ili da go pishe - vizualno ili 'profesionalno'...
I nakraia - ne moga da razbera zashto pishesh na Delphi? Ostanal sum s vpechatlenie, che administratorite obichat da pishat skriptove. Naprimer za Windows ima vgraden VBScript, v koito razdelianeto na niz v masiv stava s edna komanda Split - pochti kato v Linux...

чети и дишай по-леко
Отговор