---
title: "Få ut värde ur en sträng?"
type: "forum-thread"
url: "https://www.webforum.nu/amne/asp/174119-få-ut-värde-ur-en-sträng"
topic: "ASP"
topic_url: "https://www.webforum.nu/amne/asp"
author: "Quid"
published: "2008-09-16T14:25:55.000Z"
updated: "2008-09-17T07:31:16.000Z"
replies: 10
views: 594
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/174119-få-ut-värde-ur-en-sträng"
---

# Få ut värde ur en sträng?

## #1 — Quid, 2008-09-16T14:25Z

Hej, jag har en tabell i en databas som innehåller en massa text, t.ex.

```
<DWUser version="5.1.0.1" uid="18" oid="1" dw4uid="ROBERT" guid="c9c37de3-a7cc-4c22-b996-8e90b63ec89d" oguid="effbdb06-e9d5-437e-80d7-fd79577b5b33" name="robert" active="true" eMail="robert@domän.se" distribution="NetworkStartup" oldIniSettingsForDw="[3610844937Basket]&#xD;&#xA;DISPLAYMODE=0&#xD;&#xA;[leverant_12809116.169_RESULT]&#xD;&#xA;COLFIXED=1&#xD;&#xA;COLUMNWIDTHS=00173000340004000069000630009700083&#xD;&#xA;[Kundfakt_12833897.778_RESULT]&#xD;&#xA;COLFIXED=0&#xD;&#xA;COLUMNWIDTHS=000830009200065000650002100048000380004200042&#xD;&#xA;[5822078DW5WASTE]&#xD;&#xA;DISPLAYMODE=0&#xD;&#xA;" oldIniSettingsForViewer="[Dacs4]&#xD;&#xA;Color=002550025500000&#xD;&#xA;TextColor=002550000000000&#xD;&#xA;FontSize=20&#xD;&#xA;LineSize=5&#xD;&#xA;MerkerSize=50&#xD;&#xA;LastOCRSetting=&#xD;&#xA;LastBarcodeSetting=&#xD;&#xA;FontBold=400&#xD;&#xA;FontItalic=0&#xD;&#xA;" securityLevel="Normal"></DWUser>
```

Jag vill bara ha ut själva epostadressen, i detta fallet <robert@domän.se>, men den kan variera ifrån post till post.

Hur löser jag det?

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

## #2 — voigtann1, 2008-09-16T14:41Z

Är det "eMail" du vill flagga för att få ut e-post? eller är det bara e-post mönstret?

RegExp känns som det självklara valet i så fall.

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

## #3 — Troxy, 2008-09-16T14:52Z

Det där ser ut som en del ur ett XML-dokument.
Om så är fallet så kan du läsa attributen med XMLDOM istället.  :)

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

## #4 — Quid, 2008-09-16T14:59Z

> **voigtann1 skrev:**
>
> Är det "eMail" du vill flagga för att få ut e-post? eller är det bara e-post mönstret?
> 
> RegExp känns som det självklara valet i så fall.

Det kommer alltid att stå eMail framför adressen som jag vill ha ut.

> **Troxy skrev:**
>
> Det där ser ut som en del ur ett XML-dokument.
> Om så är fallet så kan du läsa attributen med XMLDOM istället.  :)

Ja, det är en del av ett XML-dokument som är lagrat i en databas, men det måste läsas ifrån databasen.

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

## #5 — Troxy, 2008-09-16T15:10Z

> **Quid skrev:**
>
> Ja, det är en del av ett XML-dokument som är lagrat i en databas, men det måste läsas ifrån databasen.

Är det ett giltigt XML-dokument i sin helhet?
Isf, läs dokumentet med Microsoft.XMLDOM, hämta attributet med XPath.

```
Set xml = Server.CreateObject("Microsoft.XMLDOM")
xml.LoadXML(data)
xml.SetProperty("SelectionLanguage", "XPath")
attr = xml.SelectNodes(xpath)
```

Just XPath-biten är jag dålig på  :p

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

## #6 — Quid, 2008-09-17T06:31Z

Jag kommer tyvärr inte kunna läsa ut det med hjälp av Microsoft.XMLDOM.

Några andra ideer?

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

## #7 — Fredde Mannen, 2008-09-17T06:36Z

voigtann1: Uttrycker sig, så känns regexp som det naturliga valet i detta.. 

Men mönster.. det är inte min grej.

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

## #8 — Quid, 2008-09-17T06:39Z

Inte min heller :)

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

## #9 — voigtann1, 2008-09-17T06:55Z

```
<%
Response.Write GetValue(Str, "guid")

Function GetValue(str, target)
	With New RegExp
	    .Global = True
	    .IgnoreCase = True
	    .Pattern = target & "=""([^""]+)"""
	    Dim m, match
	    set m = .Execute(str)
	    For each match in m
		GetValue = match.SubMatches(0)
	    Next
	End With
End Function
%>
```

Med din sträng ovan får jag ut resultatet:
c9c37de3-a7cc-4c22-b996-8e90b63ec89deffbdb06-e9d5-437e-80d7-fd79577b5b33

behöver kanske inte köra for each loop men it works ;)

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

## #10 — Quid, 2008-09-17T07:28Z

Klockrent, tack.

Orkar du förklara hur det funkar?

Själv skrev jag ihop en annan lösning, som funkar, men den känns inte lika snygg :)

```
v_split = Split(v_string," ")
For Each item In v_split
	IF lcase(left(item, 5)) = "email" THEN
		v_strip = Replace(item, "eMail=", "")
		v_strip = Left(v_strip, (Len(v_strip) -1))
		v_strip = Right(v_strip, (Len(v_strip) -1))
		v_email = v_strip
	END IF
Next
```

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

## #11 — voigtann1, 2008-09-17T07:31Z

RegExp mönstret letar efter (i mitt exempel) efter ett uttryck:

guid="(\[^"\]+)"
Vi skapar en grupp () för att kunna få ut datan ifrån vad det nu är för data
\[^"\]+ = Träffa allt som INTE är " mellan en träff till hur många träffar den kan hitta (greedy)

För varje träff vi hitta (regExp.execute) så hämtar vi ut gruppen 1 (i arrayn är det 0)

```
GetValue = match.SubMatches(0)
```

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

---

Tråden på webben: https://www.webforum.nu/amne/asp/174119-få-ut-värde-ur-en-sträng
