perlunity.de - PERL | JAVASCRIPT | PHP | MySQL | APACHE



#!/COMMUNITY

Members: 5374
davon online: 1
weitere User: 24
Click for quality!




11.02.2012 / 21:17

Community-Member werden   |   Paßwort vergessen   |   OnlineMonitor (1) Wer ist online ... OnlineMonitor starten !
     

 

Home


PERLscripts


PHPscripts


JAVAscripts


Hilfreiches


Links2www


Newscenter


Community


Interna




Community  »  Perl: Allgemeines Forum zur Themenübersicht Themensuche Themenansicht in Thread-Modus


Beitragzeichen zählen ohne Leerzeichen
Seitenanfang
Hi,
ich habe ein Array der so aussieht:
$arr[0]="irgendwas Störung_stört_mich";
$arr[1]="irgendwas Störung_stört_blabla";
$arr[1]="irgendwas Störung_stört_bloblo";
.
.
$arr[n]="irgendwas Störung_stört_boblo";

und zwar ich möchte die Störung_.. durch Dummy000 bis Dummy000 ersetzen
Das habe ich mit diesem Code geschaft:
$maxindex = $#arr;
for($i=0;$i<=$maxindex;$i++)
{
$table[$i]=~s/irgendwas .*/irgendwas Dummy001/;
}
jetzt möchte ich die Störung nur ersetzen wenn die Zahl dieser Buchstaben > als 12 ist
könnt ihr mir bitte sagen wie ich das machen kann?

Datum: 25.06.2007-16:03

Beitragre: zeichen zählen ohne Leerzeichen
Seitenanfang
Mit dieser Funktion werden leider auch die Leerzeichen mitgezählt:
$laenge = length ($arr[4]);
habt ihr eine andere idee?

danke euch

Datum: 25.06.2007-16:05

Beitragre: zeichen zählen ohne Leerzeichen
Seitenanfang
length zaehlt ja auch die Laenge des Strings, also die Anzahl der Zeichen und Leerzeichen sind nun mal Zeichen.
Generell kann man mit den tr//- bzw. mit den y//-Operator Zeichen zaehlen.
Das Zaehlen von Zeichen die kein Whitespace-Zeichen sind ist mit tr// aber etwas schwierig da man all die Zeichen die man zaehlen moechte mit in der Zeichenliste angeben muss.
Deshalb verwendet man hier zum Zaehlen den Substitutions-Operator s///.

#!/usr/bin/perl

use strict;
use warnings;

my $example_text = 'We do not want count whitespaces';

my $none_whitespace_char_count = $example_text =~ s/(\S)/$1/g;

print length($example_text), "\n";
print $none_whitespace_char_count, "\n";


Das Muster trifft auf die Zeichenklasse \S zu, also all die Zeichen die kein Whitespace sind, und ersetzt es mit sich selbst. Da s/// die Anzahl der Ersetzungen zurueck gibt, kann man so auch Zeichen zaehlen.

Datum: 25.06.2007-22:30

Beitragre: zeichen zählen ohne Leerzeichen
Seitenanfang
Du machst es einen nicht gerade leicht dir zu helfen, man muss erst immer etwas raetseln was genau du eigentlich machen moechtest. Einerseits bringen Beispieldaten wie dein Array nichts wenn die Daten nicht halbwegs an der Realitaet sind, so laesst sich nicht erkennen was deine Intuition ist diesen Code so zu schreiben bzw. was er letztendlich als Ergebnis bringen soll. Das naechste mal bitte die Anfrage etwas klarer formulieren und lies dir deinen Beitrag noch ein- oder zweimal durch bevor du ihn abschickst, ob auch wirklich verstaendlich ist was du geschrieben hast.


#!/usr/bin/perl

use strict;
use warnings;

my @texts = (
"irgendwas Störung_stört_mich",
"irgendwas Störung_stört_blabla",
"irgendwas Störung_stört_bloblo",
"irgendwas Störung",
);

for my $text_index (0 .. $#texts) {
$texts[$text_index] =~ s/(irgendwas\s+?)\S{13,}/$1Dummy001/;
}

print "$_\n" for @texts;


Beim letzten Beispieldatensatz wird "Störung" nicht ersetzt, da es weniger als 13 Nicht-Whitespace-Zeichen sind.

Nicht-Whitespace-Zeichen => Zeichen die kein Leerzeichen, Tabulatorzeichen, etc. sind

Datum: 25.06.2007-22:18

Beitragre: zeichen zählen ohne Leerzeichen
Seitenanfang
es hatsich erledigt in dem ich einfach die Leerzeichen ersetzt habe durch µ und danach habe ich µ gelöscht. aber das nächste Mal lese ich wass ich schreibe bevor ich es schicke.
danke.

Datum: 12.07.2007-17:42

-






-
-