---
title: "Bryta efter det senaste ordet innan max 30 tecken?"
type: "forum-thread"
url: "https://www.webforum.nu/amne/asp/183631-bryta-efter-det-senaste-ordet-innan-max-30-tecken"
topic: "ASP"
topic_url: "https://www.webforum.nu/amne/asp"
author: "magnusfeldth"
published: "2010-05-29T07:45:06.000Z"
updated: "2010-05-29T16:20:34.000Z"
replies: 10
views: 640
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/183631-bryta-efter-det-senaste-ordet-innan-max-30-tecken"
---

# Bryta efter det senaste ordet innan max 30 tecken?

## #1 — magnusfeldth, 2010-05-29T07:45Z

Jag skriver ut en rubriktext nu väldigt enkelt med en begränsning på max 30 tecknen genom att bara tillåta de första 30 tecknen att skrivas ut - men då kan den ibland bryta mitt i ett ord vilket får följden att det ser ut så här:

"Riskkapitalisterna har va..."

Men hur gör jag om jag istället vill att den bryter vid närmaste ord? Så resultatet enligt ovan skulle bli:

"Riskkapitalisterna har"

så här tafflig ser min kod ut i nuläget

```
<%=left(Ucase(RecSet3("rubrik")),30)%>...&nbsp;
```

hilfe bitte. sökte i forumet, men inget passade bra :(

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

## #2 — nitro2k01, 2010-05-29T08:03Z

Lite regex åt herrn:

```
/^(.{0,30})(\s|$)/
```

0-30 valfria tecken följt av blankteceken eller slutet av strängen.

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

## #3 — magnusfeldth, 2010-05-29T08:13Z

oj, vad jag är kass på regex.... hur får jag in det i koden? måste jag inte skriva en massa strString = Replace(strString, """", "&quot;") och sånt?

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

## #4 — nitro2k01, 2010-05-29T08:32Z

```
 Set rubrikregex = New RegExp
 rubrikregex.Pattern = "^(.{0,30})(\s|$)"
 Set match0 = rubrikregex.Execute(rubrik)
 Set subMatches = match0.Submatches

 if subMatches(1) = "" then
  kortrubrik = subMatches(0)
 else
  kortrubrik = subMatches(0) & "..."
 end if
```

Något sådant... Match0 motsvarar vad hela uttrycket matchar. subMatches(0) är de utplockade max 30 tecknen. subMatches(1) är det som kommer efteråt. Om det inte finns något efteråt så är subMatches(1) = "", annars är subMatches(1) = något blanktecken som kommer efter texten. Detta kollar if-satsen eller och lägger till ... bara om det är nödvändigt.

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

## #5 — magnusfeldth, 2010-05-29T08:47Z

Behöver jag starta med nån function? Behöver rubrikregex dimmas, och kanske nåt ytterligare? Och slutligen skriver jag ut med write.kortrubrik eller?

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

## #6 — nitro2k01, 2010-05-29T08:54Z

Jag pusslar ihop grejer frå Google-sökningar. Koden kanske inte kommer funka alls. :)
Jo, variablerna ska tydligen Dimmas. 

Vad menar du med att skriva ut? Response.Write(kortrubrik) är väl det gängse sättet.

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

## #7 — magnusfeldth, 2010-05-29T10:00Z

satte ihop det så här:

```
<%
dim kortmodell

Set modellregex = New RegExp
 modellregex.Pattern = "^(.{0,30})(\s|$)"
 Set match0 = modellregex.Execute(modell)
 Set subMatches = match0.Submatches

 if subMatches(1) = "" then
  kortmodell = subMatches(0)
 else
  kortmodell = subMatches(0) & "..."
 end if
%>
<%response.write(kortmodell)%>
```

och felmesset blev så här

```
Microsoft VBScript runtime  error '800a01b6'

Object doesn't support this property or method: 'subMatches'
```

 och hänvisar till rad 83, vilket är den med  Set subMatches = match0.Submatches

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

## #8 — nitro2k01, 2010-05-29T10:43Z

Så där kanske?

```
<%
dim kortmodell

Set modellregex = New RegExp
 modellregex.Pattern = "^(.{0,30})(\s|$)"
 Set firstMatch = modellregex.Execute(modell)
 Set subMatches = firstMatch(0).Submatches

 if subMatches(1) = "" then
  kortmodell = subMatches(0)
 else
  kortmodell = subMatches(0) & "..."
 end if
%>
<%response.write(kortmodell)%>
```

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

## #9 — magnusfeldth, 2010-05-29T11:08Z

Ja, nu blev det i vart fall inget felmeddelande, men samtidigt skrivs inget ut över huvud taget - kanske den inte får infon från databasen korrekt?

detta är koden för att öppna dbn jag använder:

```
Set RecSet3 = Server.CreateObject("ADODB.Recordset")
                Visa3 = "SELECT * FROM bildb WHERE visa = 'ja'"
                
                RecSet3.Open Visa3, Connect, adOpenStatic, adLockOptimistic
```

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

## #10 — voigtann1, 2010-05-29T12:46Z

Skapar en funktion som du kallar på:

```
Function BreakString(str, length)
	Set modellregex = New RegExp
	modellregex.Pattern = "^(.{0," & length & "})(\s|$)"
	Set firstMatch = modellregex.Execute(str)
	Set subMatches = firstMatch(0).Submatches

	if subMatches(1) = "" then
		BreakString = subMatches(0)
	else
		BreakString = subMatches(0) & "..."
	end if

	Set modellregex = Nothing
End Function
```

Och Anropar den:

```
Response.Write(BreakString(RecSet3("FieldName"), 30))
```

Den kod du bifogar nu säger inget direkt, du visar bara att du skapar upp ett Recordset, du måste ju göra något med ditt Recordset för att något skall visas.

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

## #11 — magnusfeldth, 2010-05-29T16:20Z

Tack voigtann1 och Nitro2K01! Nu funkar det!

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

---

Tråden på webben: https://www.webforum.nu/amne/asp/183631-bryta-efter-det-senaste-ordet-innan-max-30-tecken
