Tja! Har inte riktigt koll på vad du menar, men såhär kanske? använd regular expressions. Du kan också kolla på funktionerna Replace, Mid och Instr. För att få bort "(c)" från strängen kan du köra Replace(title, "(c)", ""). Med hjälp av Mid och Instr kan du lätt välja ut en viss del av en sträng. Eller... använda regular expressions som är bättre men något krångligare. <code> Med din snutt får jag bara ut det första ordet. Kanske ska tillägga att en sträng även kan se ut såhär: Vad tror du om det här. Hmm... du skrev först att du bara ville ha ut det första ordet? Sorry... jag formulerade mig lite klantigt. <code> Tja! Oj... jag såg inte att det var asp det handlade om.Split 2 gånger?
Har en textsträng som kan se ut enligt följande:
blabla (c) bla bla *blabla* *blabla*
eller
blabla *blabla* *blabla*
Just nu anväder jag jag koden:
<code>
title = rss.titles(i)
arrTitle = Split(title,"*")
strTitle = arrTitle(0)
</code>
Men jag skulle vilja att den även splittar vid "(" på de strängar som har det tecknet.
Summa summarum: Jag vill endast skriva ut det första "blabla"
Någon som kan visa hur jag ska göra :)
Mvh Andreas Sv: Split 2 gånger?
<code>
title = rss.titles(i)
arrTitle = Split(title,"*")
arrTitle = Split(title,"(")
strTitle = arrTitle(0)
</code>
/JohanSv: Split 2 gånger?
Det finns bra dokumentation om den i MSDN library.Sv: Split 2 gånger?
/PelleSv: Split 2 gånger?
Dim tempString As String
tempString = "blabla (c) bla bla *blabla* *blabla*"
tempString = Left(tempString, InStr(1, tempString, " ") -1)
</code>
ThomasSv: Split 2 gånger?
"blabla blabla (c) bla bla *blabla* *blabla*"
Vill alltså ha med det 2 första blabla :)
Mvh Andreas Sv: Split 2 gånger?
Visserligen VB-kod men...
<code>
Sub main()
Dim title As String
Dim strTitle As String
title = "blabla (c) bla bla *blabla* *blabla*"
strTitle = getTextstartDelimiter(title, "*")
strTitle = getTextstartDelimiter(strTitle, "(c)")
Debug.Print strTitle
title = "blabla *blabla* *blabla*"
strTitle = getTextstartDelimiter(title, "*")
strTitle = getTextstartDelimiter(strTitle, "(c)")
Debug.Print strTitle
title = "blabla blabla (c) bla bla *blabla* *blabla*"
strTitle = getTextstartDelimiter(title, "*")
strTitle = getTextstartDelimiter(strTitle, "(c)")
Debug.Print strTitle
End Sub
Public Function getTextstartDelimiter(ByVal aText As String, Optional ByVal delimiter As String = " ") As String
On Error Resume Next
getTextstartDelimiter = Split(aText, delimiter)(0)
End Function
</code>
//
JanneSv: Split 2 gånger?
>Summa summarum: Jag vill endast skriva ut det första "blabla"
Exakt vad är det du vill göra? Ha ut dom två första orden? Eller ha ut allt som kommer före något tecken (tex "(")? Eller nått annat?
ThomasSv: Split 2 gånger?
Jag vill ha ut allt som är innan (c).
Men alla strängar har inte ett (c) utan då är det allt innan * som gäller.
Hoppas jag förklarat lite mer korrerkt nu :)
Mvh AndreasSv: Split 2 gånger?
Dim s As String
'välj vilken sträng som gäller:
's = "blabla (c) bla bla *blabla* *blabla*"
s = "blabla *blabla* *blabla*"
If InStr(1, s, "(c)") > 1 Then
s = Left(s, InStr(1, s, "(c)" -1))
Else
s = Left(s, InStr(1, s, "*") -1))
End If
</code>
Det där borde fungera...
ThomasSv: Split 2 gånger?
Jag får felet:
Slut på programsats förväntas.
s = Left(s, InStr(1, s, "*") -1))
Dessutom kan jag inte skriva "Dim s As String". Då ballar den ur.
Vad gör jag för fel?
<code>
For Each i in rss.Results
title = rss.titles(i)
Dim s
s = title
If InStr(1, s, "(c)") > 1 Then
s = Left(s, InStr(1, s, "(c)" -1))
Else
s = Left(s, InStr(1, s, "*") -1))
End If
</code>
Mvh AndreasSv: Split 2 gånger?
<code>
Dim s
'välj vilken sträng som gäller:
's = "blabla (c) bla bla *blabla* *blabla*"
s = "blabla *blabla* *blabla*"
If InStr(1, s, "(c)") > 1 Then
s = Left(s, InStr(1, s, "(c)") -1)
Else
s = Left(s, InStr(1, s, "*") -1)
End If
</code>
Thomas