---
title: "Split"
type: "forum-thread"
url: "https://www.webforum.nu/amne/asp/152091-split"
topic: "ASP"
topic_url: "https://www.webforum.nu/amne/asp"
author: "Asa"
published: "2006-10-05T06:19:17.000Z"
updated: "2006-10-06T09:00:01.000Z"
replies: 14
views: 876
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/asp/152091-split"
---

# Split

## #1 — Asa, 2006-10-05T06:19Z

Har en kod som splittar en sträng vid i 2 delar vid 2 nollor men nu så har jag sett att den splittar fel när det innehåller 0 nollor på rad. Hjälp tack.

Ex på kod:
300045

30 skall vara en sträng och 45 skall vara en

De två nollorna före 45 skall man splitta via. Hur gör jag?

Min kod nu:

```
strKod    = "300045"
arrStr    = Split(strKod,"00")
strV1     = arrStr(0)
strV2     = arrStr(1)
```

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

## #2 — Engine^, 2006-10-05T06:53Z

Split() gör inte fel. Funktionen gör precis vad du säger att den ska göra.

Just detta exempel kan du lösa med regular expression

```
pattern = "\d{2}"
```

Men jag har en känsla av att din sträng inte alltid ser ut på detta sätt.

Så - på vilka olika sätt kan strängen vara utformad?

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

## #3 — Asa, 2006-10-05T07:04Z

Okej!
Det skall alltid finnas två nollor i mitten som skall splittas via och inte skall finnas med i nåt värde. Sen före nollorna kan vara 5 siffror och de siffrorna efter kan vara upp till 5 siffror.

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

## #4 — Engine^, 2006-10-05T07:39Z

Aha. Då är ett krav att den andra delen (siffrorna efter 00) inte får börja med noll och att dubbelnoll inte får förekomma i de nummer du vill ha ut (en ganska svår begränsning).

```
arrStr = split( left( strTest, instr( strtest, "00" ) ) & "," & mid( strTest, instrrev( strtest, "00" ) + 2 ), "," )
```

Jag föreslår att du försöker hitta en annan metod :)

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

## #5 — Asa, 2006-10-05T09:08Z

Hur tycker du man ska göra? Det måste vara siffror.

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

## #6 — Peter S, 2006-10-05T09:46Z

Att "00" alltid ligger i *mitten* innebär att antalet tecken alltid är jämnt. Då

```
s = (len(strKod) - 2) / 2
strV1 = left(strKod, s)
strV2 = right(strKod, s)
```

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

## #7 — Asa, 2006-10-05T10:23Z

Tack för det! Jag ska alltså skriva?

```
strKod    = "300045"
s           = (len(strKod) - 2) / 2
strV1      = left(strKod, s)
strV2      = right(strKod, s)
```

Hmm, detta kan inte funka heller då det kan vara från 1 till X siffror före dessa 00 och efter dessa 00.

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

## #8 — Peter S, 2006-10-05T10:24Z

> **Asa skrev:**
>
> Tack för det! Jag ska alltså skriva?

Yes!

> **Asa skrev:**
>
> Hmm, detta kan inte funka heller då det kan vara från 1 till X siffror före dessa 00 och efter dessa 00.

Varför inte?

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

## #9 — @nders, 2006-10-05T10:31Z

> Hmm, detta kan inte funka heller då det kan vara från 1 till X siffror före dessa 00 och efter dessa 00.

Varför inte? Om nollorna är *i mitten* så borde det ju funka? Annars kan du ju använda InstrRev() och ta reda på var 00 ligger (bakifrån, så det första talet kan sluta på noll. 

Det smartaste lär väl dock vara att använda en separator som faktiskt är en separator...

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

## #10 — Asa, 2006-10-05T10:32Z

Vet dock inte hur InstrRev funkar...

Man ska kunna knappa in siffrorna via sin telefon..

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

## #11 — @nders, 2006-10-05T10:33Z

> Man ska kunna knappa in siffrorna via sin telefon..

Kan man inte använda # eller \* då?

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

## #12 — Troxy, 2006-10-05T11:17Z

Det här kanske blir lite omständigt, men det är i alla fall en ordentlig regexp-koll...

```
<%

sCode = "133700666"

Set oRegExp = New RegExp
oRegExp.Pattern = "^(\d+)00(\d+)$"
If oRegExp.Test(sCode) Then
	sMatch1 = oRegExp.Execute(sCode).Item(0).Submatches.Item(0)
	sMatch2 = oRegExp.Execute(sCode).Item(0).Submatches.Item(1)
End if
Set oRegExp = Nothing

%>
```

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

## #13 — Peter S, 2006-10-05T11:26Z

> **Troxy skrev:**
>
> Det här kanske blir lite omständigt, men det är i alla fall en ordentlig regexp-koll...
>
>
> ```
> <%
> 
> sCode = "133700666"
> 
> Set oRegExp = New RegExp
> oRegExp.Pattern = "^(\d+)00(\d+)$"
> If oRegExp.Test(sCode) Then
> 	sMatch1 = oRegExp.Execute(sCode).Item(0).Submatches.Item(0)
> 	sMatch2 = oRegExp.Execute(sCode).Item(0).Submatches.Item(1)
> End if
> Set oRegExp = Nothing
> 
> %>
> ```

Problemet är ju att fler än två nollor efter varandra kan existera. I ditt exempel ligger ju heller inte nollorna i *mitten* varför hela strängen består av ett ojämnt antal tecken.

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

## #14 — Denkan, 2006-10-05T12:49Z

> **Asa skrev:**
>
> Hmm, detta kan inte funka heller då det kan vara från 1 till X siffror före dessa 00 och efter dessa 00.

Då är det tyvärr omöjligt att ta reda på värdena, då både första och andra delen kan innehålla en eller flera nollor.

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

## #15 — Engine^, 2006-10-06T09:00Z

Svaret på denna fråga är alltså att istället för att användarna matar in valfritt antal siffror före och efter de två nollorna, så måste de mata in ett bestämt antal. Förslagsvis så börjar dessa (idnummer eller vad det nu är) alltid på 1. Addera t.ex. 100000 till alla dessa nummer så slipper du bekymmer med försvinnande nollor.

Då behöver du ingen avgränsare (men det är alltid bra med #) :)

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

---

Tråden på webben: https://www.webforum.nu/amne/asp/152091-split
