German Leerzeichen in Label entfernen

peternmb

Well-Known Member
Licensed User
Longtime User
Hallo,

in meiner Android-App kann der User in einem Label entweder den Rechnernamen oder die IP-Adresse angeben um eine SMB-Verbindung mit einem Windows-Rechner für den Datenaustausch aufzubauen - funktioniert alles soweit problemlos.

Der einzige Schönheitsfehler dabei: meist wird die IP-Adresse angegeben, z.B. 192.168.178.27 und da macht der Android-Editor oft hinter dem Punkt automatisch ein Leerzeichen was kaum auffällt - allerdings funktioniert dann natürlich der Verbindungsaufbau nicht.

Wie kann ich dieses Problem auf elegante Art lösen? Ich bin mir auch nicht sicher, ob im Rechnernamen ein Leerzeichen vorkommen darf.
 

DonManfred

Expert
Licensed User
Longtime User
B4X:
dim txt as string = editfield1.text
txt = txt.Replace(" ","")
 

peternmb

Well-Known Member
Licensed User
Longtime User
Hallo Manfred, so einfach ist es leider nicht.

Da wahlweise der Rechnername oder die IP-Adresse angegeben werden kann käme es bei Rechnername "Mein PC" auch zum Problem, dass die Verbindung nicht aufgebaut werden kann.

Fangen alle IP-Adressen im lokalen Netz mit 192 an? Dann bräuchte ich nur dann das Replace machen, wäre das die Lösung?
 

Midimaster

Active Member
Licensed User
naja, da musst du halt etwas kompliziertere Test mit dem String machen. Denkbar wäre ja auch einfach:
B4X:
txt = txt.Replace(". ",".")

oder Du fragst ab, ob der Text insgesamt genau 3 Punkt-Zeichen enthält.
B4X:
If AnzahlPunkte(txt)=3 Then
   txt = txt.Replace(". ",".")
End If
. . .
Sub AnzahlPunkte(text As String) As Int
    Dim Start As Int=0, Anzahl As Int=0
    Do
        Start=text.IndexOf2(".",Start)+1
        If Start =0 Then Exit
        Anzahl=Anzahl+1
    Loop
    Return Anzahl
End Sub

Mit "regulären Ausdrücken" könnte man auch sicherstellen, dass der Text in der Form:

Zahl-Punkt-Zahl-Punkt-Zahl-Punkt-Zahl

...aufgebaut ist.
 
Last edited:

Midimaster

Active Member
Licensed User
habe meine vorherige Antwort (post #5) um eine Beispielfunktion erweitert. Die checkt, ob es sich um genau 3 Zeichen handelt.
 

pucki

Active Member
Licensed User
Ist viel zu aufwendig.

Frage in einer Schleife ab ob da Buchstaben drin sind. Wenn ja ist es Text.

Wenn sie nicht da sind, baue die IP selbst zusammen aus den Text. Dabei kannst du sie auch noch auf Gültigkeit prüfen.
Die Punkte-Methode ist super unsicher. 192.168.344.15 rennt nämlich mit der Methode voll gegen die Wand.

Gruß

Pucki
 
D

Deleted member 103

Guest
B4X:
Dim test1 As String = "192.168.344.15 "
    Log(test1.Trim)
 

peternmb

Well-Known Member
Licensed User
Longtime User
Hallo,

es geht mir nicht primär darum zu prüfen, ob die IP-Adresse korrekt ist sondern wie der Titel der Frage sagt darum:
Leerzeichen in Label entfernen
Eine SMB-Verbindung funktioniert auch mit dem Rechnernamen statt der lokalen IP-Adresse.
Ich möchte - falls eine IP-Adresse angegeben wurde - dort eventuelle Leerezeichen enrtfernen.
Das funktioniert so prima.
 
Top