Schrift
[thread]5825[/thread]

String auf Zeichen prüfen!: String auf Zeichen prüfen!



<< >> 5 Einträge, 1 Seite
Gast Gast
 2003-10-16 13:37
#63901 #63901
Ich hab einen ganz normalen String in einer Variablen namens $test.
Ich möchte dazu eine Abfrage erstellen mit folgenden Bedingungen:
1) Es darf in diesem String nur genau ein "E" vorkommen, nicht mehr und nicht weniger.
2) Es muss nach dem "E" irgendwo ein "." kommen, allerdings nicht direkt nach dem "E".
Sprich die korrekt Eingabe müsste so aussehen: aaaEccc.zzz
Sollten die beiden Bedingungen (siehe oben) nicht erfüllt sein, so soll 'false' zurückgegeben werden, ansonsten halt ein 'true'.

Kann mir jemand die If-Bedingung oder eine Lösung dafür sagen?
Ich hab's schon mit den 'regluar expressions' probiert, bin aber nicht zu einer 100% Lösung gekommen.
jan
 2003-10-16 13:53
#63902 #63902
User since
2003-08-04
2536 Artikel
ModeratorIn
[Homepage] [default_avatar]
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
my $test = "aaaEccc.zzz";
if($test =~ tr/eE/eE/ > 1)
{
print "zu viele e's\n";
}
else
{
if(index(lc($test), "e") + 1 >= index($test, "."))
{
print "punkt falsch gesetzt\n";
}
}


quick and dirty ;)
jan
 2003-10-16 13:57
#63903 #63903
User since
2003-08-04
2536 Artikel
ModeratorIn
[Homepage] [default_avatar]
bzw, besser in einer
Code: (dl )
1
2
3
4
if(($test =~ tr/eE/eE/ > 1) || (index(lc($test), "e") + 1 >= index($test, "."))
{
print "falsches eingabeformat\n";
}
renee
 2003-10-16 13:59
#63904 #63904
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
#! /usr/bin/perl

$test = 'aaEa2.a';
$test =~ /^([^E]*?)E([^E]+?)\.[^E]*?$/? print "yes\n": print "no\n";
$test2 = 'aaa2E.a';
$test2 =~ /^([^E]*?)E([^E]+?)\.[^E]*?$/? print "yes\n": print "no\n";
$test3 = 'aEaEa2.a';
$test3 =~ /^([^E]*?)E([^E]+?)\.[^E]*?$/? print "yes\n": print "no\n";

_ _END_ _

yes
no
no
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
jan
 2003-10-16 14:06
#63905 #63905
User since
2003-08-04
2536 Artikel
ModeratorIn
[Homepage] [default_avatar]
nicht ganz, aber gut.
Code: (dl )
1
2
$test = 'aaE.a.2a';
$test =~ /^([^E]*?)E([^E]+?)\.[^E]*?$/? print "yes\n": print "no\n";

yes

Code: (dl )
1
2
$test = 'aaE.a.2a';
$test =~ /^([^E]*?)E([^E.]+?)\.[^E]*?$/? print "yes\n": print "no\n";

no
<< >> 5 Einträge, 1 Seite



View all threads created 2003-10-16 13:37.