C - Zeichenkette manipulieren < Algor.+Datenstr. < Theoretische Inform. < Hochschule < Informatik < Vorhilfe
|
Status: |
(Frage) beantwortet | Datum: | 10:43 Mi 13.06.2007 | Autor: | misterET |
Hallo, ich habe mal eine Frage, wie man aus einer Zeichenkette die Leerzeichen entfernt?
Habe ziemlich lange gegoogelt aber nichts passendes gefunden.
Gibt es nicht irgendweine Funktion?
|
|
|
|
Es wäre ganz praktisch, wenn du auch dazuschreiben könntest um welche Programmiersprache es sich handelt.
Lg
|
|
|
|
|
Also was mir jetzt ganz spontan dazu einfällt ist die "Split" Funktion!
Gibts aufjedenfall in JAVA und VB.
VB :
Dim sArray() As String
sArray = Split(Text, Zeichen)
Text = dein String
Zeichen = das Zeichen nach dem gesplittet wird. In deinem Fall Zeichen = " "
JAVA:
String Text = "Ich bin ein Test";
String[] splittArray = Text.split(" "); //hier ist das Trennzeichen
Ergebnis:
splittArray[0] = "Ich";
splittArray[1] = "bin";
splittArray[2] = "ein";
splittArray[3] = "Test";
Wenn du dann den Text wieder zusammenstöpseln willst, musst du halt einfach ne Schleife machen die dir das Array durchgeht und alles zusammenhängt.
Pseudocodemäßig schaut das so aus:
für i=1 bis LängeArray
text = text + Array[i]
Hoffe das hilft!
LG
|
|
|
|
|
Status: |
(Frage) beantwortet | Datum: | 15:21 Mi 13.06.2007 | Autor: | misterET |
Hi! Sorry, die Sprache mit der ich arbeite ist C.
Ich glaube so eine Splitfunktion gibt es da gar nicht?
Ich wollte es so machen, dass ich mir jedes Zeichen anschaue, und wenn ich beim Leerzeichen angelangt bin, verschiebe ich das darauffolgende um eine Position nach vorne (also dorthin, wo sich das Leerzeichen befand), und die ersten Buchstaben jedes der Wörter sind dann groß.
Bsp.
SoSollEsHinterherAussehen
|
|
|
|
|
> Hi! Sorry, die Sprache mit der ich arbeite ist C.
>
Mhm also in C hab ich erst sehr wenig programmiert. also kann ich dir nciht sagen obs das auch für C gibt.
> Ich glaube so eine Splitfunktion gibt es da gar nicht?
>
>
> Ich wollte es so machen, dass ich mir jedes Zeichen
> anschaue, und wenn ich beim Leerzeichen angelangt bin,
> verschiebe ich das darauffolgende um eine Position nach
> vorne (also dorthin, wo sich das Leerzeichen befand), und
> die ersten Buchstaben jedes der Wörter sind dann groß.
>
> Bsp.
>
> SoSollEsHinterherAussehen
jup ist eine Möglichkeit: Aber wenn du nur das nächste um 1 nach vorne schiebst hast du dann ja an der stelle ein leerzeichen.
Pseudocodemäßig würd ichs so machen:
for(i=0;i<Arraylänge;i++){
wenn (Array[i]==" ") dann{
for (j=i;j<Arraylänge-1;j++){
Array[i]=Array[j+1];
}
}
}
wobei du dir da nopch was überlegen musst wenn 2 leerzeichen hintereinander stehen. würde dann nicht funktionieren.
ne andre möglichkeit wäre es, das ganze mit 2 arrays zu machen. du gehst das 1 durch und wenn der inhalt != " " ist schreibst du es ins 2 array rein.
j=0 //position im 2 Array
for (i=0;i<Arraygröße;i++){
falls (Array[i] != " ") dann{
Array2[j]=Array[i];
j++;
}
}
Hier sollte es auch kein Problem mit x Leerzeichen hintereinander geben.
edit:
Was mir noch einfällt. damit du das array2 gleich mit der richtigen größe erstellen kannst kannst du zuerst das erste array
mit
for (i=0;i<Arraygröße;i++){
falls (Array[i] != " ") dann{
Zähler++;
}
}
durcheghen und dann array2 mit der größe Zähler erstellen.
lg
|
|
|
|