Witam.
Jak można wyciągnąc "nazwę hosta" z znaczników code - przed znacznik code?
Tak aby to wyglądało tak:
- okokoko.png (21 KB) - ściągnięć: 205
Witam.
Jak można wyciągnąc "nazwę hosta" z znaczników code - przed znacznik code?
Tak aby to wyglądało tak:
Wyrażeniem regularnym https://(.+?)/.*
A w czym jest problem?
Nie znasz tej: http://msdn.microsoft.com/pl-pl/library/6wh7x3fs%28v=vs.110%29.aspx metody?
@kosmita90he no i co za problem? Regexp i wrzucanie linków do mapy/słownika.
Widzę że nadal to męczysz trochę poprawiony (dodane to o co Ci chodziło) kod który już jakiś czas temu Ci dawałem:
Function GetHost(Link As String) As String
Dim StartPos As Integer
Dim EndPos As Integer
StartPos = Link.IndexOf("://")
If StartPos > -1 Then
EndPos = Link.IndexOf("/", StartPos + 3)
If EndPos > -1 Then
GetHost = Link.Substring(0, EndPos)
Else
GetHost = Link
End If
Else
GetHost = Link
End If
End Function
Function GeHostDisplayName(Link As String) As String 'nowa funkcja
Dim HOSTS_DATA = {{"filesherk.pl", "FileShark", "45A7A7"}, _
{"rapidgator.net", "Rapidgator", "8E2FB6"}, _
{"rapidu.net", "Rapidu", "999900"}} 'host, nazwa wyswietlana, kolor
Dim HOST_DISPLAY_NAME_FRMT As String = "[color=#{1}]{0}[/color]" & Environment.NewLine
GeHostDisplayName = ""
Dim hostName As String = GetHost(Link)
If hostName.Length > 0 Then
hostName = hostName.Substring(hostName.IndexOf("://") + 3)
For i As Integer = 0 To HOSTS_DATA.GetUpperBound(0)
If String.Compare(hostName, HOSTS_DATA(i, 0)) = 0 Then
Return String.Format(HOST_DISPLAY_NAME_FRMT, HOSTS_DATA(i, 1), HOSTS_DATA(i, 2))
End If
Next
'nie znany host jako nazwe wyswielana podstawiamy nazwe hosta np. rapidshare.com i kolor czarny
Return String.Format(HOST_DISPLAY_NAME_FRMT, hostName, "0000000")
End If
End Function
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Const CODE_START As String = "[code]"
Const CODE_END As String = "[/code]"
Dim LinksList = New List(Of String)
LinksList.AddRange(RichTextBox1.Lines)
LinksList.Sort(Function(X As String, Y As String)
Dim sX, sY As String
sX = GetHost(X)
sY = GetHost(Y)
If sX.Equals(sY) Then
sX = System.IO.Path.GetFileName(X)
sY = System.IO.Path.GetFileName(Y)
Return sX.CompareTo(sY)
Else
Return X.CompareTo(Y)
End If
End Function)
Dim LinksGrop = "" 'tu zaczynaja sie zmiany
Dim LastHost = ""
Dim NewLinePos As Integer
For Each Link As String In LinksList
If (LastHost.Length = 0) Then
LinksGrop = GeHostDisplayName(Link) & CODE_START
End If
If (LastHost.Length = 0) Or Link.Contains(LastHost) Then
LinksGrop = LinksGrop + Link + Environment.NewLine
Else
NewLinePos = LinksGrop.LastIndexOf(Environment.NewLine)
LinksGrop = LinksGrop.Substring(0, NewLinePos)
LinksGrop &= CODE_END & Environment.NewLine & Environment.NewLine
LinksGrop &= GeHostDisplayName(Link) & CODE_START & Link & Environment.NewLine
End If
LastHost = GetHost(Link)
Next
NewLinePos = LinksGrop.LastIndexOf(Environment.NewLine)
LinksGrop = LinksGrop.Substring(0, NewLinePos)
LinksGrop = LinksGrop & CODE_END 'koniec zmian
RichTextBox1.Clear()
RichTextBox1.AppendText(LinksGrop)
End Sub
@kAzek
Twój kod co teraz podałeś - działa Super...pod warunkiem że sie wkleja linki z tego samego Hostingu...np tylko CatShare...natomiast jak dam tam mix linków, np kilka z catshare i kilka z fileshark i kilka z rapidu....to Twoj kod szaleje i robi zdublowane linki + nagłówki :(
no kurcze dla mnie problem...
zrobilem funkcje , niby dziala ale bardzo chaotycznie to napisane ;/
jakby ktos mogl podpowiedziec jak to poprawić by kod był bardziej czytelny i "normalny"
Function GetHost(Link As String) As String
Dim StartPos As Integer
Dim EndPos As Integer
StartPos = Link.IndexOf("://")
If StartPos - 1 Then
EndPos = Link.IndexOf("/", StartPos + 3)
If EndPos > -1 Then
GetHost = Link.Substring(0, EndPos)
Else
GetHost = Link
End If
Else
GetHost = Link
End If
End Function
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
Dim LinksList = New List(Of String)
LinksList.AddRange(TextBox1.Lines)
Dim naglowek As String
For Each Link As String In TextBox1.Text
naglowek = (GetHost(TextBox1.Text))
naglowek = Replace(naglowek, "[code]https://", "")
naglowek = Replace(naglowek, "[code]http://", "")
naglowek = Replace(naglowek, ".net", ":")
naglowek = Replace(naglowek, ".pl", ":")
If Not TextBox2.Text.Contains(naglowek) And TextBox1.Text.Contains("[code]https://") Then
TextBox2.Text = TextBox2.Text + Replace(TextBox1.Text, "[code]https://", naglowek + "[code]https://")
End If
If Not TextBox2.Text.Contains(naglowek) And TextBox1.Text.Contains("[code]http://") Then
TextBox2.Text = TextBox2.Text + Replace(TextBox1.Text, "[code]http://", naglowek + "[code]http://")
End If
Next
End Sub
part
w nazwie i obcinaj wszystko wraz z tym wtedy chyba powinno działać jak chcesz.