---
title: "Split"
type: "forum-thread"
url: "https://www.webforum.nu/amne/asp/182440-split"
topic: "ASP"
topic_url: "https://www.webforum.nu/amne/asp"
author: "devotion"
published: "2010-02-15T13:02:31.000Z"
updated: "2010-02-16T09:42:24.000Z"
replies: 8
views: 779
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/182440-split"
---

# Split

## #1 — devotion, 2010-02-15T13:02Z

Hej,

Jag har följande lilla fina funktion, som hämtar ut värdet som är omslutet av brackets, i en sträng.

```
'Funktion för att hämta värden mellan brackets
function GetBracketedPart(s)
	dim m, re, sResult
	set re = new regexp
	re.pattern = "\[([^\]]+)\]"
	if re.test(s) then
		set m = re.execute(s)
		sResult = m(0).submatches(0)
	else
		sResult = ""
	end if
  	GetBracketedPart = sResult
end function
```

Hur modifierar jag den att hantera

```
[12345 KOD]
```

Dvs mha parameter hämta ut antingen 12345 eller KOD?

Det är alltid mellansteg mellan.

Funderade på om man kan använda split på något sätt, och sen styra vilken position man vill ha i funktionens parametrar.

Typ:

```
'Funktion för att hämta värden mellan brackets
function GetBracketedPart(s, sPos)
	dim m, re, sResult
	set re = new regexp
	re.pattern = "\[([^\]]+)\]"
	if re.test(s) then
		set m = re.execute(s)
		sResult = m(0).submatches(0)
	else
		sResult = ""
	end if
  	GetBracketedPart = sResult
end function
```

Jag skulle ju kunna göra det i två steg:

```
a=split(GetBracketedPart(s))

sPart1 = a(0)
sPart2 = a(1)
```

Jag vill dock att detta är klart, direkt ifrån funktionen.

 :)
 

Mvh
Henrik

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

## #2 — voigtann1, 2010-02-15T13:36Z

Det är ju bara att köra det i din sResult innan du sätter den på GetBrackertPart

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

## #3 — devotion, 2010-02-15T13:39Z

```
'Funktion för att hämta värden mellan brackets
function GetBracketedPart(s)
	dim m, re, sResult
	set re = new regexp
	re.pattern = "\[([^\]]+)\]"
	if re.test(s) then
		set m = re.execute(s)
		sResult = m(0).submatches(0)
	else
		sResult = ""
	end if
  	GetBracketedPart = Split(sResult)
end function
```

...

```
GetBracketedPart(0)
```

?

Mvh
Henrik

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

## #4 — voigtann1, 2010-02-15T13:41Z

Nej

GetBracketPart(...)(0) om något, fast du vill inte köra detta varje gång, spara resultatet i en variabel och anropar variabeln än att anropar samma funktion två gånger:

```
GetBracketPart(...)(0)
GetBracketPart(...)(1)
```

Är sämmre än:

```
dim obj
obj = GetBracketPart(...)
obj(0)
obj(1)
```

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

## #5 — devotion, 2010-02-15T16:49Z

Kan man göra så här:

```
'Funktion för att hämta värden mellan brackets
function GetBracketedPart(s, pos)
	dim a, m, re, sResult
	set re = new regexp
	re.pattern = "\[([^\]]+)\]"
	if re.test(s) then
		set m = re.execute(s)
		a = split(m(0).submatches(0))
		sResult = a(pos)
	else
		sResult = ""
	end if
  	GetBracketedPart = sResult
end function
```

...

```
=GetBracketedPart(s, 0)
```

Och på så sätt få ut

```
12345
```

   :)  

Mvh
Henrik

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

## #6 — voigtann1, 2010-02-15T17:28Z

Ja, men det är ett korkat sätt om du skall hämta ut flera postioner från samma sträng, då kör du samma funktion om och om igen, vilket är onödigt.

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

## #7 — Peter S, 2010-02-15T20:28Z

```
s = "[12345 KOD]"

Function GetBracketedPart(value, pos)
	dim m, re, sResult
	set re = new regexp
	re.pattern = "\[([^\]]+)\]"
	if re.test(s) then
		re.pattern = "[^\s\[\]]+"
		re.global = true
		set m = re.execute(value)
		if pos - 1 < m.count then
			sResult = m(pos - 1)
		end if
	else
		sResult = ""
	end if
  	GetBracketedPart = sResult

End Function

response.write GetBracketedPart(s, 1) ' -> 12345
response.write GetBracketedPart(s, 2) ' -> KOD
```

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

## #8 — devotion, 2010-02-16T09:30Z

Funkar ju fint... :)  

Går det att modifiera, så att om man sätter pos --\> "" returneras 12345 KOD?

Dvs:

```
response.write GetBracketedPart(s, "") --> 12345 KOD
```

Mvh
Henrik

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

## #9 — voigtann1, 2010-02-16T09:42Z

Ja, dock så ser jag fortfarande inte varför du gör det som du gör..

redigerad, återkommer.

```
<%
s = "[12345 KOD]"

Function GetBracketedPart(value, pos)
	dim m, re, sResult
	set re = new regexp
	re.pattern = "\[([^\]]+)\]"
	if re.test(s) then
		If pos = ""  Then
			set m = re.execute(value)
			sResult = m(0).SubMatches(0)
		Elseif IsNumeric(pos) Then
			re.pattern = "[^\s\[\]]+"
			re.global = true
			set m = re.execute(value)
			if pos - 1 < m.count then
				sResult = m(pos - 1)
			end if
		end if
	else
		sResult = ""
	End If
  	GetBracketedPart = sResult
End Function

response.write GetBracketedPart(s, 1)  & "<br />" ' -> 12345
response.write GetBracketedPart(s, "") & "<br />" ' -> 12345
response.write GetBracketedPart(s, 2) & "<br />" ' -> KOD
%>
```

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

---

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