---
title: "Strängfunktion"
type: "forum-thread"
url: "https://www.webforum.nu/amne/programmering/90675-strängfunktion"
topic: "Programmering"
topic_url: "https://www.webforum.nu/amne/programmering"
author: "urban_hahne"
published: "2003-11-18T09:49:50.000Z"
updated: "2003-11-19T08:13:07.000Z"
replies: 10
views: 762
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/programmering/90675-strängfunktion"
---

# Strängfunktion

## #1 — urban_hahne, 2003-11-18T09:49Z

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.

Permalänk: https://www.webforum.nu/p/90675

## #2 — Josef, 2003-11-18T09:58Z

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

Permalänk: https://www.webforum.nu/p/1207214

## #3 — PeW, 2003-11-18T10:17Z

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

Permalänk: https://www.webforum.nu/p/1207221

## #4 — Addeladde, 2003-11-18T10:22Z

Du kan göra det med regular expression

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

Permalänk: https://www.webforum.nu/p/1207223

## #5 — Addeladde, 2003-11-18T10:23Z

```
<%
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

Permalänk: https://www.webforum.nu/p/1207224

## #6 — urban_hahne, 2003-11-18T10:36Z

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\]

Permalänk: https://www.webforum.nu/p/1207230

## #7 — fiddler, 2003-11-18T11:30Z

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

Permalänk: https://www.webforum.nu/p/1207254

## #8 — urban_hahne, 2003-11-18T11:49Z

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

Permalänk: https://www.webforum.nu/p/1207267

## #9 — agneta_rung, 2003-11-18T14:28Z

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;
```

Permalänk: https://www.webforum.nu/p/1207353

## #10 — fiddler, 2003-11-19T07:09Z

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

Permalänk: https://www.webforum.nu/p/1207670

## #11 — MinOrk, 2003-11-19T08:13Z

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

Permalänk: https://www.webforum.nu/p/1207687

---

Tråden på webben: https://www.webforum.nu/amne/programmering/90675-strängfunktion
