-1
votes

Comment scinder la chaîne C # et ignorer le mot incomplet de la chaîne

Je veux faire une fonction générale. Je veux stocker uniquement le mot complet dans la matrice. Un mot incomplet doit être ignoré xxx

J'ai une taille de matrice arrête [19]. Ici, la condition est, si le pointeur vient à "liitle", il faudra le "éclairé", donc je ne veux donc pas la parole fractionnée en tableau, puis je dois laisser tomber le mot "petit". Vous voulez des mots complets dans un tableau. Je veux générer la sortie ci-dessous. xxx

J'essaie le code ci-dessous, alors quelle condition je dois ajouter pour ignorer le mot scindinal xxx < / pré>


5 commentaires

Est-ce que cela est spécifique à la chaîne? Est-ce juste pour cette chaîne ou plusieurs différents? Pouvez-vous pas seulement se séparer »et imprimer uniquement les deux premiers mots?


Êtes-vous autorisé à utiliser .Split () ?


Je veux faire une fonction générale. Je veux stocker uniquement le mot complet dans la matrice. Le mot incomplet devrait être ignoré.


Qu'est-ce qu'un mot incomplet? Comment faites-vous ce général?


Qui a donné la note de -ve?


6 Réponses :


0
votes

Modifier la ligne Char [] Ar = NOUVEAU CHAR [19]; ​​ TO CHAR [] ARR = Nouveau Char [15]; . .

Cela donnera la sortie dont vous avez besoin.

La raison en est que vous avez pris la taille de 19 ans et en boucle, cela prend du caractère de la phrase jusqu'à ce que le mot "éclairé" et la longueur de la phrase "scintillement scintillement" est également 19.

merci.


3 commentaires

Merci pour la réponse mais je veux faire une fonction générale. Je veux stocker uniquement le mot complet dans la matrice. mot incomplet devrait être ignoré


Pourquoi ne vérifiez-vous pas l'espace dans la boucle BCoz, il y aura toujours un espace entre les mots d'une phrase. Cela devrait résoudre votre problème. Faites-moi savoir si cela fonctionne pour vous.


@Bheesham quel tableau? Vous n'avez même pas de tableau pour les mots ??



0
votes

Une solution Bit Butt pourrait ressembler à ceci:

private static string SplitCut( string input, int length)
{
    var words = input.Split(" ");
    StringBuilder builder = new StringBuilder();
    foreach (var word in words)
    {
        if ( builder.Length + word.Length <= length)
        {
            builder.Append(word);
        }
        else
        {
            //can't add more
            break;
        }
    }
    if (builder.Length == 0)
        return "Can't cut off without breaking word";
    return builder.ToString();
}


3 commentaires

Bonjour, juste un petit bug dans la première solution. Si l'index est inférieur à 1, votre code lancera une exception indexAtOfRangeException.


Merci, le bogue est corrigé maintenant, mais j'aurais ajouté la condition dans cette ligne si (longueur> = entrée.length && longueur <1) entrée de retour; // entrée entière


En fait, dans le cas de longueur <= 0 en premier lieu, lancer ArgOUTOFRANgeException est probablement l'action la plus appropriée - qui est ce que j'ai fait à la mise à jour de ma réponse.



0
votes

Je ne suis pas vraiment sûr de ce que vous essayez de réaliser, mais peut-être que ceci pourrait vous être utile? XXX

Vous pouvez ensuite paramétrer le 19 Pour la longueur (si c'est quelque chose que vous voulez faire).


0 commentaires

0
votes

Vous pouvez faire quelque chose comme ça. XXX PRE>

et utilisez-le comme ceci P>

strRead(strSentence,19)


0 commentaires

0
votes

Ajoutez une condition if-else dans la boucle, casser si la longueur du résultat variable3 est égale à 19 xxx

pour (int i = 0; i xxx

}


0 commentaires

0
votes

Ce code résoudra votre problème. Faites-moi savoir s'il y a quelque chose qu'il n'est pas clair. XXX


2 commentaires

@Bheesham Si cela vous convient et que vous n'avez pas besoin d'une explication supplémentaire, pourriez-vous s'il vous plaît marquer / l'accepter?


Je ne peux pas la marquer, je suis un nouvel utilisateur et une réputation de dépassement de ma pile est faible