6
votes

Essayer de trouver l'index du premier numéro dans une chaîne en utilisant perl

J'essaie de trouver l'index de la première occurrence d'un nombre de 0 à 9.

Disons que: xxx

Je veux trouver la position où 9 est.

J'ai essayé ceci: < Pré> xxx

et: xxx


0 commentaires

3 Réponses :


9
votes

Utiliser regex Informations de position :

8


4 commentaires

Merci! Je suppose que cet index ne fonctionne pas parce que j'essayais de lui donner une gamme au lieu d'un substrateur?


@ysth: / \ d / a est meilleur que / [0-9] /, car il prend en charge d'autres formats de nombres, comme le nombre d'arabes (initialement appelé Indien): 0, 1, 2, 3, 4, 5, 6, 7 , 8, 9 et numéros indiens: 0 (0), 1 (1), 2 (2), etc.


@Ashrafbashir: non, / \ d / cela, / \ d / a est identique à / [0-9] /. et oui, juste / d / prend en charge d'autres chiffres; c'est le problème. Ce n'est pas ce que la plupart des gens veulent ou attendent dans la plupart des cas.


Lorsque vous traitez avec plusieurs langues prenant en charge d'autres chiffres est très nécessaire, et c'est quoi / d / fait



0
votes

Vous pouvez essayer même au-dessous du code PERL:

use strict;
use warnings;

my $String = "ABDFSASF9fjdkasljfdkl11";

if($String =~ /(\d)/)
 {
     print "Prematch string of first number $1 is $`\n";
     print "Index of first number $1 is " . length($`);
    } 


0 commentaires

0
votes

Vous pouvez essayer ceci:

perl -e '$string="ABDFSASF9fjdkasljfdkl1";@array=split(//,$string);for $i (0..$#array) {if($array[$i]=~/\d/){print $i;last;}}'


0 commentaires