9
votes

Comment diviser une chaîne par position en Java

Je n'ai trouvé de réponse nulle part une réponse. Si j'ai: string s = "Comment allez-vous" ? Comment puis-je diviser ceci en deux chaînes, alors première chaîne contenant de 0...Length () / 2 et la 2ème chaîne de S.Length () / 2 + + 1 .. S.Length () ?

Merci!


1 commentaires

@roddik: Étant donné que la longueur est un int et 2 est une INT, cette division entière fera une première chaîne plus courte que la deuxième chaîne.


7 Réponses :


5
votes

Vous pouvez utiliser 'Substring (Démarrer, Fin)', mais bien sûr, vérifiez si la chaîne n'est pas nulle avant:

String first = s.substring(0, s.length() / 2);
String second = s.substring(s.length() / 2);


4 commentaires

Mais cela ne fonctionne même pas ... il donne "re vous" et "e vous"


@Torres, non, qui manquerait le personnage du milieu. (et lancez une exception sur la chaîne vide)


La réponse d'Alois est incorrecte et Torres est également incorrecte. La bonne réponse est string s = "Comment allez-vous?"; Chaîne d'abord = S.Substring (0, S.Length () / 2); String second = S.Substring (S.Length () / 2);


Je donne quelques astuces et explique comment fonctionne la méthode. Il n'était pas destiné à couvrir parfaitement les exigences, désolé. Maintenant corrigé ...



2
votes

5 commentaires

Vous avez commis une erreur: Substrage (BuT-Position). Donc, la sous-chaîne (Cutpos) n'est pas la même chose que la sous-chaîne (0, Cutpos)


Au lieu de S.Substring (CutPOS + 1, S.Length ()); , meilleure utilisation S.Substring (Cutpos + 1);


Désolé, cela ne fonctionne pas non plus. donne "comment un" et "e vous" (à condition que vous modifiez cutpos - à cutpos =


@aioobe, merci .... Le Cutpos + 1 sur le S2 est ce qui a causé le problème. Je l'ai corrigé


@Le gentleman Elite, vous voudrez peut-être modifier le premier - dans un = aussi.



25
votes

Cela devrait faire:

String s = "How are you?";
String first = s.substring(0, s.length() / 2);  // gives "How ar"
String second = s.substring(s.length() / 2);    // gives "e you?"
  • string.substring (int i) code> avec un argument renvoie la sous-chaîne de départ à la position i code> p> p> l> l>

  • string.substring (int i, int j) code> avec deux arguments renvoie la sous-chaîne de départ à i code> et finissant par j-1 code>. p> li> ul>

    (Notez que si la longueur de la chaîne est impair, secondaire code> aura un autre caractère que premier code> en raison de l'arrondi de la division entier. ) p> p>


0 commentaires

6
votes
String s0 = "How are you?";
String s1 = s0.subString(0, s0.length() / 2);
String s2 = s0.subString(s0.length() / 2);
So long as s0 is not null.EDITThis will work for odd length strings as you are not adding 1 to either index.  Surprisingly it even works on a zero length string "".

0 commentaires

4
votes

Voici une méthode qui scindre une chaîne dans les articles n de longueur. (Si la longueur de la chaîne ne peut pas être divisée exactement par n , le dernier élément sera plus court.) xxx

code de test: < / p> xxx

sortie:

['Hound', 'Dog']
["Amour", 'moi te', 'nder']
['Jail', 'Hous', 'e ro', 'ck']


0 commentaires

2
votes

Je n'ai trouvé aucun endroit de réponse.

Le premier endroit où vous devriez toujours regarder est au Javadocs pour la classe en question: dans ce cas java.lang.string . Les javadocs

  • peut être parcouru en ligne sur le site Web Oracle (par exemple, chez http: // Télécharger. oracle.com/javase/6/docs/api/ ),
  • sont inclus dans n'importe quel Sun / Oracle Java SDK Distribution,
  • sont probablement visibles dans votre IDE Java et
  • et être trouvé à l'aide d'une recherche Google.

0 commentaires

0
votes
    final MessageSolution messageSolution = new MessageSolution();
    final String message = "SMSas5 ABC DECF HIJK1566 SMS POP SUV XMXS MSMS";
    final int maxSize = 11;
    System.out.println(messageSolution.solution(message, maxSize));

}

2 commentaires

Veuillez ajouter une explication à votre code pour être utile pour d'autres lecteurs.


Divisez la chaîne avec une longueur spécifiée sans une pause de mots, la saisie attendue contient sans l'espace d'attaque ou de suivi.