webForumDet fria alternativet

Strängfunktion

10 svar · 758 visningar · startad av urban_hahne

urban_hahneMedlem sedan maj 2003153 inlägg
#1

Jag skulle vilja ha en funktion som tar en sträng och en char som inargument och delar den i två strängar avbrutna vid char.
Exempel:

kod:
split(' min sträng',' ');
slut kod.

returnerar: split[0]:='min' och split[1]:='sträng'

Hur skriva funktionen för att få detta resultat.
Tack på förhand till någon.

JosefMedlem sedan mars 20023 561 inlägg
#2

urban_hahne: Använd gärna [kod]-taggarna när du postar kod.

PeWMedlem sedan juni 200010 432 inlägg
#3

Då topic i den tråden som detta postades i redan är avslutad iom att den trådskaparen fått svar, flyttade jag denna nya fråga till en egen tråd.

PeW - Moderator i Delphi

AddeladdeMedlem sedan jan. 20013 406 inlägg
#4

Du kan göra det med regular expression

https://www.webeye.nu finns ett exempel på hur man delar upp ord.
Sedan är det bara att placera det i en array

AddeladdeMedlem sedan jan. 20013 406 inlägg
#5
<%
strText = "Ett vanligt problem när man skall koppla sin sida till en databas är"&_
  " att man har för lite rättigheter till den mapp där databasen ligger, eller att databasen"&_
  " i sig är 'read only'. Ett annat problem brukar vara att man har angivit en felaktig sökväg."&_
  " Uppfyller man något av ovanstående kriterier kan man få detta felmeddelande: "&_
  "[Microsoft][ODBC Microsoft Access Driver]General error Unable to open registry key"&_
  " 'Temporary (volatile) Jet DSN for process 0x7d4 Thread 0x888 DBC 0xbf822d4 Jet'."

Set objRegExp = New regexp
objRegExp.Global = true
objRegExp.IgnoreCase = true
objRegExp.Pattern = "\w"
Set Matches = objRegExp.Execute(strText)
Response.write "Texten innehåller " & Matches.count&" stycken ord"
%>

Den här koden räknar ord. Kan inte vara så svårt att göra om det till det du behöver

urban_hahneMedlem sedan maj 2003153 inlägg
#6

koden som delar strängar kan jag. Det jag inte vet är syntaxen för hur skriva funktionen så att den ger 2 resultat tillbaka till anropet.

jag testade så här

start kod:
function split(minStr:string;minchar:char): array of string;
begin
kod som splittar strängen här
...
...
end;
slut kod:

men det blir fel. I alla exempel jag hittar skickas bara ett resultat tillbaka från funktionen. Jag vill ha 2 resultat (reultat[0] och resultat[1]

fiddlerMedlem sedan juli 20023 617 inlägg
#7

Du kan väl skapa ett objekt innehållandes dina två strängar.

urban_hahneMedlem sedan maj 2003153 inlägg
#8

skapa objekt av 2 strängar? hur göra. Eller rättare sagt hur ska funktionen deklareras för att det ska funka.

agneta_rungMedlem sedan juli 2002145 inlägg
#9

Så här kan du lösa det med hjälp av en StringList (arrayer är så knepiga att jobba med...):

function split(minStr:string;minchar:char): TStringList;
var
  inx: integer;
begin
  Result := TStringList.Create;
  inx := Pos(minchar, minStr);
  if inx = 0 then
    raise Exception.Create(
        'Tecknet "' + minchar + '" finns inte i strängen "' + minStr + '"!');
  Result.Add(Copy(minStr, 1, inx-1));
  Result.Add(Copy(minStr, inx+1, Length(minStr)))
end;

Du anropar funktionen så här:

var
  sl: TStringList;
  InStr: string;
  UtStr1: string;
  UtStr2: string;
   .
   .
begin
   .
   .
  sl := split(InStr, ' ');
  UtStr1 := sl[0];
  UtStr2 := sl[1];
   .
   .
end;
fiddlerMedlem sedan juli 20023 617 inlägg
#10

Hm, ibland har man för bråttom att skriva... :r
Det var såhär jag menade:

type
  TMyString = record
    StrFirst, StrSecond: String
  end;

och

function split(minStr:string;minchar:char): TMyString;

Fast nu hade du ju redan fått ett bra svar...:OO

MinOrkMedlem sedan aug. 2000234 inlägg
#11

Det finns också en funktion som heter ExtractStrings som du kan titta på.

124 ms totalt · 3 externa anrop · v20260731065814-full.2b84b982
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
122 ms — hämta tråd, inlägg och bilagor (db)