Meddelande

Minska
No announcement yet.

Bryta efter det senaste ordet innan max 30 tecken?

Minska
X
 
  • Filter
  • Klockan
  • Show
Clear All
new posts

  • Bryta efter det senaste ordet innan max 30 tecken?

    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
    [kod]<%=left(Ucase(RecSet3("rubrik")),30)%>...&nbsp;[/kod]

    hilfe bitte. sökte i forumet, men inget passade bra
    Sanningen är störst, men EG-rätten har företräde
    eight-thirty res at Dorsia | Mister One Million | jag var där | Klauz!

  • #2
    Lite regex åt herrn:[kod]/^(.{0,30})(\s|$)/[/kod]0-30 valfria tecken följt av blankteceken eller slutet av strängen.
    Gameboy Genius - Foto: Gatukonst och elektronikporr
    Internklippning:
    1) Snaggning av fångar.
    2) Klippning frisörer emellan.

    Kommentera


    • #3
      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?
      Sanningen är störst, men EG-rätten har företräde
      eight-thirty res at Dorsia | Mister One Million | jag var där | Klauz!

      Kommentera


      • #4
        [kod] 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
        [/kod]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.
        Gameboy Genius - Foto: Gatukonst och elektronikporr
        Internklippning:
        1) Snaggning av fångar.
        2) Klippning frisörer emellan.

        Kommentera


        • #5
          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?
          Sanningen är störst, men EG-rätten har företräde
          eight-thirty res at Dorsia | Mister One Million | jag var där | Klauz!

          Kommentera


          • #6
            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.
            Gameboy Genius - Foto: Gatukonst och elektronikporr
            Internklippning:
            1) Snaggning av fångar.
            2) Klippning frisörer emellan.

            Kommentera


            • #7
              satte ihop det så här:
              [kod]<%
              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)%>[/kod]

              och felmesset blev så här
              [kod]Microsoft VBScript runtime error '800a01b6'

              Object doesn't support this property or method: 'subMatches' [/kod] och hänvisar till rad 83, vilket är den med Set subMatches = match0.Submatches
              Sanningen är störst, men EG-rätten har företräde
              eight-thirty res at Dorsia | Mister One Million | jag var där | Klauz!

              Kommentera


              • #8
                Så där kanske?[kod]<%
                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)%>[/kod]
                Gameboy Genius - Foto: Gatukonst och elektronikporr
                Internklippning:
                1) Snaggning av fångar.
                2) Klippning frisörer emellan.

                Kommentera


                • #9
                  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:
                  [kod]Set RecSet3 = Server.CreateObject("ADODB.Recordset")
                  Visa3 = "SELECT * FROM bildb WHERE visa = 'ja'"

                  RecSet3.Open Visa3, Connect, adOpenStatic, adLockOptimistic[/kod]
                  Sanningen är störst, men EG-rätten har företräde
                  eight-thirty res at Dorsia | Mister One Million | jag var där | Klauz!

                  Kommentera


                  • #10
                    Skapar en funktion som du kallar på:
                    [kod]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[/kod]

                    Och Anropar den:

                    [kod]Response.Write(BreakString(RecSet3("FieldName"), 30))[/kod]

                    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.
                    "det går inte att lära en gammal norrlänning byta namn på irc" - gammalt kinesiskt uttryck

                    Kommentera


                    • #11
                      Tack voigtann1 och Nitro2K01! Nu funkar det!
                      Sanningen är störst, men EG-rätten har företräde
                      eight-thirty res at Dorsia | Mister One Million | jag var där | Klauz!

                      Kommentera

                      Working...
                      X