Deutsches AutoHotkey Homepage AutoHotkey Community
Wir helfen uns gegenseitig aus der Patsche
 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   RegistrierenRegistrieren 
 ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

sonderzeichen die zweite

 
Neues Thema eröffnen   Neue Antwort erstellen    AutoHotkey Community Foren-Übersicht -> Ich brauche Hilfe!
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
lamer



Anmeldedatum: 15.10.2006
Beiträge: 64

BeitragVerfasst am: Mi Okt 18, 2006 9:07 pm    Titel: sonderzeichen die zweite Antworten mit Zitat

hallo ihrs, wie bau ich den code so um, das nur zahlen, ein leerzeichen UND buchstaben in %tmpstring% enthalten sind.
Code:
aus
"12-/#+*34ab           c deF"
soll dann
"1234ab c deF"
werden
Code:

Send ^c
string = %clipboard%
MyString:=LeaveOnlyNumbers(String)
tmpstring=%MyString%
TrayTip,,%tmpstring%
LeaveOnlyNumbers(String)
{
   stringlen, Laenge, String
   stringsplit, Stringarray, string
   Loop, %Laenge%
   {
   if stringarray%A_Index% is not integer
      {
      Stringarray%A_Index%=
      }
      x:= stringarray%A_Index%
      NewString=%NewString%%x%
   }
   String=%NewString%
   Return %String%
}
Return
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
denick



Anmeldedatum: 15.09.2006
Beiträge: 1240
Wohnort: Berlin

BeitragVerfasst am: Do Okt 19, 2006 5:54 am    Titel: Antworten mit Zitat

Code:
sIN := "12-/#+*34ab           c deF"
MsgBox, % ClearString(sIn)
Exit

ClearString(String)
{
   Autotrim, Off                               ; muss vielleicht nicht sein
   ; überflüsige Leerzeichen entfernen
   Loop,
   {
      StringReplace, String, String, %A_Space%%A_Space%, %A_Space%, UseErrorLevel
      If (ErrorLevel = 0)
      {
         Break
      }
   }
   ; und los geht'S
   Stringlen, Laenge, String
   Stringsplit, Stringarray, String
   Loop, %Laenge%
   {
      x := ""
      If Stringarray%A_Index% is Digit          ; Ziffern
      {
         x := Stringarray%A_Index%
      }
      Else If Stringarray%A_Index% is Upper     ; Großbuchstaben
      {
         x := Stringarray%A_Index%
      }
      Else If Stringarray%A_Index% is Lower     ; kleinbuchstaben
      {
         x := Stringarray%A_Index%
      }
      Else If (Stringarray%A_Index% = " ")      ; Leerzeichen
      {
         x := Stringarray%A_Index%
      }
      NewString=%NewString%%x%
   }
   Return %NewString%
}

Das ist simples AHK, geht vielleicht noch viel schöner! Wink
_________________
Hilfe zur Hilfe

(de)nick
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
BoBo
Gast





BeitragVerfasst am: Do Okt 19, 2006 7:55 am    Titel: Antworten mit Zitat

Evtl. würde noch der Abgleich über den ASCIIWert gehen
Zitat:
MyASCII := Asc(A_LoopField) ; braucht natürlich ein Loop, Parse dazu
If MyASCII between 128 and 255 ; fortlaufende Anzahl an Characteren
Break
Zitat:
MyASCII := Asc(A_LoopField)
If MyASCII in 128,210,211,254,255 ; spezifische Charactere
Break
Ungetesteter Gedankenrülpser. Cool
Nach oben
denick



Anmeldedatum: 15.09.2006
Beiträge: 1240
Wohnort: Berlin

BeitragVerfasst am: Do Okt 19, 2006 8:52 am    Titel: Antworten mit Zitat

Der erste Versuch war weder schön noch korrekt. Die Leerzeichenersetzung muss natürlich nachträglich gemacht werden. Deshalb hier der zweite, noch etwas geschönte Versuch:
Code:
sIN := "12-/#+*34ab $ %  äöü   ß   Ä  c deF"
MsgBox, % ClearString(sIn)
Exit
; ------------------------------------------------------------------------------
; Zeichenfolge bereinigen
; ------------------------------------------------------------------------------
ClearString(String)
{
   Local NewString, Stringarray
   NewString := ""
   Autotrim, Off                               ; muss vielleicht nicht sein
   ; Zeichen prüfen
   Stringlen, Laenge, String
   Stringsplit, Stringarray, String
   Loop, %Laenge%
   {
      If Char_OK(Stringarray%A_Index%)
      {
         NewString := NewString . Stringarray%A_Index%
      }
   }
   ; überflüssige Leerzeichen entfernen
   Loop,
   {
      StringReplace, NewString, NewString, %A_Space%%A_Space%, %A_Space%, UseErrorLevel
      If (ErrorLevel = 0)
      {
         Break
      }
   }
   Return %NewString%
}
; ------------------------------------------------------------------------------
; Zulässige Zeichen prüfen
; ------------------------------------------------------------------------------
Char_OK(_Char)
{
   If _Char Is Digit
   {
      Return True
   }
   If _Char Is Upper
   {
      Return True
   }
   If _Char Is Lower
   {
      Return True
   }
   If (_Char = " ")
   {
      Return True
   }
   Return False
}

_________________
Hilfe zur Hilfe

(de)nick
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
lamer



Anmeldedatum: 15.10.2006
Beiträge: 64

BeitragVerfasst am: Do Okt 19, 2006 11:41 am    Titel: wow Antworten mit Zitat

vielen dank denick und BoBo, das würde ich nicht mal schaffen wenn als belohnung ein benz vor der türe steht und bei euch hört sich das so leicht an Razz
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
denick



Anmeldedatum: 15.09.2006
Beiträge: 1240
Wohnort: Berlin

BeitragVerfasst am: Do Okt 19, 2006 3:53 pm    Titel: Re: wow Antworten mit Zitat

lamer hat Folgendes geschrieben:
vielen dank denick und BoBo, das würde ich nicht mal schaffen wenn als belohnung ein benz vor der türe steht und bei euch hört sich das so leicht an Razz


Keine Ursache! Very Happy

Aber leicht ist es erst, wenn man's kann, und bis dahin kann es bei der doch recht spröden AHK-Syntax ein mühseliger Weg sein.
_________________
Hilfe zur Hilfe

(de)nick
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    AutoHotkey Community Foren-Übersicht -> Ich brauche Hilfe! Alle Zeiten sind GMT
Seite 1 von 1

 
Gehe zu:  
Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.


Powered by phpBB © 2001, 2005 phpBB Group
Deutsche Übersetzung von phpBB.de