0
votes

String String jusqu'à la première lettre

J'ai besoin de Substring la chaîne (entrée utilisateur) jusqu'à la première lettre. Je ne peux pas utiliser regex dans indexof . J'ai essayé comme ça:

chaîne stringvalue = entrée.Substring (0, entrée.indexof ([^ \\ d.]));


3 commentaires

Quelque chose comme ça? ^ \ w * motif - Démarrage de la chaîne ^ suivi de zéro ou plus non-lettres ?


Pouvez-vous ajouter quelques exemples.


@DMITRYYBYCHENKO Il renvoie stringindexoutofboundSException


5 Réponses :


-2
votes

Ceci pourrait fonctionner pour vous:

jshell> s
s ==> " 123abc"

jshell> s.replaceAll("[a-zA-Z]{1}.*", "")
$6 ==> " 123"


3 commentaires

Je ne peux pas utiliser cette chose, car l'utilisateur peut saisir "123ABC123".


Que voulez-vous dans ce cas "123ABC123"? Si vous souhaitez utiliser les deux numéros, vous pouvez utiliser la méthode 'Split'.


Ne nécessite que les premiers 123



0
votes

Si vous savez que votre chaîne commence par des chiffres, vous pouvez simplement le scinder:

String input = "1234x";
System.out.println(input.split("[^\\d.]")[0]); //1234


0 commentaires

1
votes

Une solution tout à fait simple, mais cela pourrait fonctionner: xxx

Vous recherchez d'abord la première lettre de la chaîne, alors vous prenez simplement la sous-chaîne jusqu'à son index. < / p>


0 commentaires

0
votes

Si vous voulez ce qui est avant la première occurrence d'une lettre, vous pouvez utiliser un groupe de capture pour correspondre à n'importe quel caractère, à l'exception d'une lettre à l'aide de \ p {l} correspondant à une lettre en utilisant \ p {l} code>.

1234
  • ^ code> début de chaîne li>
  • ( code> capture groupe 1 fort>
    • \ p {l} + code> Match 1+ fois l'opposé de \ p {l} code> li> ul> li>
    • ) code> li>
    • \ p {l} code> correspond à n'importe quelle lettre de n'importe quelle langue li> ul>

      Démo Regex | Java Demo P> xxx pré>

      sortie p>

      Pattern pattern = Pattern.compile("^(\\P{L}+)\\p{L}");
      Matcher matcher = pattern.matcher("1234x");
      if (matcher.find()) {
          System.out.println(matcher.group(1));
      }
      


0 commentaires

1
votes

Recherchez la première lettre dans une chaîne en utilisant une expression régulière; rien de trop fantaisie, pas astuces : xxx

Je préfère cela puisque cela fait exactement ce que je veux (je ne veux pas Split ou remplacer n'importe quoi, juste trouver )


0 commentaires