2010-07-13 4 views
5

Cas 1Chaîne, split. besoin d'aide pour la compréhension

String a = "   "; 
String[] b = a.split(","); 
System.out.println(b.length); 

Prints 1. Pourquoi?

Case 2

String a = ",,,,,,,,,,,,"; 
String[] b = a.split(","); 
System.out.println(b.length); 

Prints 0. Pourquoi?

Honnêtement, je suis un peu perdu

Répondre

12

Ce comportement est mentionné dans la documentation String.split:

Cette méthode fonctionne comme si en invoquant la two-argument split method avec l'expression donnée et un argument limite de zéro. Les chaînes vides à la fin ne sont donc pas incluses dans le tableau résultant.

Votre premier exemple doit donner un tableau contenant une seule chaîne contenant des espaces. Une chaîne contenant des espaces n'est pas vide, elle est donc incluse dans le résultat.

Votre deuxième exemple donnerait un tableau contenant beaucoup de chaînes vides, mais ceux-ci ne sont pas inclus dans le tableau résultant comme mentionné dans la documentation. En ce qui concerne la raison pour laquelle les concepteurs Java ont décidé que la suppression des chaînes vides finales lorsque limit est zéro est une bonne idée - je ne sais pas. La plupart des autres langages/plates-formes de programmation ne le font pas. Je considère qu'il s'agit d'un "getcha" - une fonctionnalité qui ne fonctionne pas comme la plupart des gens l'attendent.

+3

Notez que si vous vous utilisez 'a.split (",", -1) '(ou tout négatif), les composants finaux vides ne seront pas supprimés. –

+0

La raison en est qu'ils voulaient qu'il se comporte comme perl. –

+4

Toute cette bizarrerie fait partie de la raison pour laquelle Gava a sa propre classe Splitter. –

1

Cas 1 a un seul élément dans le tableau b "" - vos espaces

Case 2 entrées vides sont retirées

0

Dans SQL Server 2005 mon nom db: un nom de table : un nom de colonne : un (varchar (max)), b (int) valeurs

ab

bonjour | howdoudo | imfine | merci 1
h | ho | ine | ths 2 helddlo | howdddoudo | imfiddne | TDHS 3

me dire la procédure stockée split pour obtenir la table ressemble à ceci pour dire quand b = 1 b = 2 b = 3

sortie de sortie de sortie aaa bonjour h helddlo howdoudo ho howdddoudo
imfine ine imfiddne grâce ths TDHS