stringmethode

09/24/2008 13:52 bluescreen²#1
Hallo,
ich suche eine Methode um herauszufinden ob ein string groß bzw. kleinschreibung enthält.
kennt ihr da eine?

bluescreen²
09/24/2008 14:55 mr.rattlz#2
Da du jetzt nicht direkt gesagt hast um welche Programmiersprache es sich handelt ein generischer Vorschlag: Falls die verwendete Sprache es ermöglicht einen String in lowercase umzuwandeln könntest du das machen und dann vorher und nachher vergleichen. Wenn sie gleich sind war zuvor kein Großbuchstabe vorhanden :p
09/24/2008 15:30 verT!c4L#3
Sind in den meisten Programmiersprachen nicht entsprechende *RegEx dabei,
mit denen man etwas derartiges realisieren kann?

Ansonsten könnte man wohl auch ein pattern matching verfahren benutzen,
auf Basis der ASCII-Tabelle...

*RegEx = Regular Expressions
09/24/2008 17:46 bluescreen²#4
lol,
ich idiot... ihr habt recht; ich hätte erwähnen sollen, dass es sich um c++ handelt..
naja. Ich kann auch eine sehr komplexe schleife machen die den string zeichenweise abspeichers und jedes Zeichen einzeln überprüft. Ich wollte nur wissen ob einer von euch so ne art "pussymethode" kennt, womit man sich leichter tut.

bluescreen²
09/24/2008 21:41 x]vIrus[x#5
Quote:
Originally Posted by bluescreen² View Post
lol,
ich idiot... ihr habt recht; ich hätte erwähnen sollen, dass es sich um c++ handelt..
naja. Ich kann auch eine sehr komplexe schleife machen die den string zeichenweise abspeichers und jedes Zeichen einzeln überprüft. Ich wollte nur wissen ob einer von euch so ne art "pussymethode" kennt, womit man sich leichter tut.

bluescreen²

ansi c:
bool ContainsUpper(char* str)
{
for(int i = 0 ; str[i] != 0;i++) if (str[i] <=90) return true;
return false;
}

cpp.net:
bool ContainsUpper(string^ str)//oder so ähnlich :S
{
for(int i = 0 ; i<str.Length ;i++) if (str[i] <=90) return true;
return false;
}


achja, für containslower einfach den namen der funktion ändern und anstatt "<=90" ">90" schreiben

ums zu verstehn einfach die ascii tabelle ankucken, wenns nich tut - einfach meckern ^^
/edit, ansonsten gibts da sicherlich auch schon funktionen für, ich kenn sie aber nich auswendig :<
09/25/2008 08:12 mr.rattlz#6
Quote:
Originally Posted by x]vIrus[x View Post
ansi c:
bool ContainsUpper(char* str)
{
for(int i = 0 ; str[i] != 0;i++) if (str[i] <=90) return true;
return false;
}

cpp.net:
bool ContainsUpper(string^ str)//oder so ähnlich :S
{
for(int i = 0 ; i<str.Length ;i++) if (str[i] <=90) return true;
return false;
}


achja, für containslower einfach den namen der funktion ändern und anstatt "<=90" ">90" schreiben

ums zu verstehn einfach die ascii tabelle ankucken, wenns nich tut - einfach meckern ^^
/edit, ansonsten gibts da sicherlich auch schon funktionen für, ich kenn sie aber nich auswendig :<
So was habe ich jetzt absichtlich nicht gebracht, weil ich nicht sicher war, ob es ein Ascii oder Unicode String ist ;)
09/25/2008 09:41 Cholik#7
if its unicode you would just have to edit the for-call to i+2 :P
haha mr.rattlz failed ;9
09/25/2008 09:49 psych0o#8
Wie wärs denn einfach, wenn man den original string zusätzlich in lowercase umwandelt und die beiden dann vergleicht?

mit php:
if ($string == stringtolower($string) return true; // String enthält keine Großbuchstaben

Weil bei deiner Methode, virus, wird das ergebnis auch dann true sein, wenn es kein Buchstabe ist sondern ein anderes zeichen aus der ascii tabelle, dessen Wert kleiner 90 ist.

//Edit: sehe gerade das rattlz die gleiche idee auch schon gepostet hat ^^
09/25/2008 10:36 Bot_interesierter#9
Jetzt solltest du uns noch verraten ob du die String Class aus der string lib benutzt oder den String Typ aus der cstring lib, im ersten fall kannst du die tolower methode verwenden und wie bereits mehrfach vorgeschlagen mit dem alten String vergleichen, im zweiten fall suchst du dir die Entsprechende CString Function raus und machst das gleiche, ich bin mir nicht ganz sicher aber ich glaube das die String classe auch eine containslower/upper Methode hat, am besten schaust da mal nach.
09/25/2008 10:45 verT!c4L#10
Ich wär dafür mal eine Syntax Highlightening für entsprechende Sources zu implementieren.
Das liest sich besser ^^ (im vim style oder so)
09/25/2008 11:09 mr.rattlz#11
Quote:
Originally Posted by al_j View Post
if its unicode you would just have to edit the for-call to i+2 :P
haha mr.rattlz failed ;9
Well, this would work with utf-16, but what about utf-8?
09/25/2008 12:47 x]vIrus[x#12
wenn es sich um standard text handelt ist meine methode völlig ausreichend.

ansonsten:

ansi c:
bool ContainsUpper(char* str)
{
for(int i = 0 ; str[i] != 0;i++)
{
if ((( str[i] >='A' ) && (str[i] <='Z'))||(( str[i] >='a' ) && (str[i] <='z')))
{
if (str[i] <='Z') return true;
}
}
return false;
}

cpp.net:
bool ContainsUpper(string^ str)//oder so ähnlich :S
{
{
if ((( str[i] >='A' ) && (str[i] <='Z'))||(( str[i] >='a' ) && (str[i] <='z')))
{
if (str[i] <='Z') return true;
}
}
return false;
}
09/25/2008 15:36 bluescreen²#13
wisst ihr ich hatte eigenlich vor das ganze mit zu machen. Geht das auch weil dan is string ein struct?
09/25/2008 15:42 bluescreen²#14
lol
tut mir leid mein internet kackt ab also kann ichs nich mehr ändern ich meinte ich will "<string>" verwenden
09/25/2008 18:02 x]vIrus[x#15
dann nimm das untere beispiel und lass das ^ weg :<