3
votes

Comment déplacer n caractères du début de la chaîne à la fin en continu chaque fois que j'appuie sur le bouton?

J'essaie de déplacer le premier caractère de la chaîne à la fin chaque fois que j'appuie sur le bouton.

Ma logique semble n'afficher que la première sortie encore et encore après avoir appuyé sur le bouton.

string input = "";
string manipulated = "";
int initial;

input = txtInput.Text;

if (txtInput.Text == String.Empty)
{
    MessageBox.Show("Textbox is empty, please input a string.");
}
else 
{
        for (initial = 1; initial < input.Length; initial++)
        {
            manipulated += input[initial];
        }
        manipulated += input[0];
        lblOutput.Text = manipulated.ToString();
        input = manipulated;
        manipulated = "";
}

Par exemple si j'entre "1234" dans la zone de texte et que j'appuie sur le bouton, ma sortie doit être "2341", puis après avoir appuyé à nouveau sur le bouton, la sortie doit passer à "3412" .. etc.

p >


0 commentaires

3 Réponses :


0
votes

Vous prenez votre OUTPUT et le placez dans un Label ... mais continuez à prendre votre INPUT de la TextBox qui n'a pas changé ... donc le même résultat à chaque fois.

p> Changez simplement:

txtInput.Text = manipulated;

En:

lblOutput.Text = manipulated.ToString();


0 commentaires

1
votes

Vous pouvez améliorer votre code par une autre solution en utilisant Méthode de sous-chaîne

Créez une nouvelle variable appelée _number et définissez la valeur sur 1

    private void BtnMoveText_Click(object sender, EventArgs e)
    {
        if (txtInput.Text == string.Empty)
        {
            MessageBox.Show(@"TextBox is empty, please input a string.");
            return;
        }
        if (_number > txtInput.TextLength)
            _number = 1;
        lblOutput.Text = txtInput.Text.Substring(_number) + txtInput.Text.Substring(0, _number);
        _number++;

        #region ** Depending on Microsoft **

         /*
           Substring(Int32)
             (Retrieves a substring from this instance. The substring starts at a specified character position and continues to the end of the string.)
           Parameters
               startIndex Int32
               The zero-based starting character position of a substring in this instance.
      .......................
           Substring(Int32, Int32) 
            (Retrieves a substring from this instance. The substring starts at a specified character position and has a specified length..)
           Parameters
               startIndex Int32
               The zero-based starting character position of a substring in this instance.
               length Int32                
               The number of characters in the substring.
       */
        #endregion

    }

Puis dans Button événement, vous pouvez remplacer votre code par ce code

public partial class Form1: Form
{
    private int _number = 1; 
    // ....
}

 entrez la description de l'image ici


0 commentaires

1
votes

Voici un exemple simple d'opérations de base sur les chaînes:

private void ManipulateBtn_Click(object sender, EventArgs e)
    {
        string input = InputTxt.Text; // Read the text from you Textbox in Windos form
        if (input == string.Empty)
        {
            return;
        }
        string temp = input[0].ToString(); // Create a temp for the first char(toString) from you input
        input = input.Remove(0,1); // Remove (from you input) At Index 0 (the idex from fist char in string) 1 time) 
        input += temp; //add the firs item from you input at the end of string
        InputTxt.Text = input; // prin the result in the Textbox back.
    }

Vous pouvez voir l'exemple SimpleStringOperation


2 commentaires

c'est très utile. Cependant, je veux que ma sortie soit à lblOutput, ce qui signifie que le lblOutput.Text doit changer continuellement chaque fois que j'appuie sur le bouton et non le Input.Text, je peux l'utiliser comme référence. Merci beaucoup :)


Merci beaucoup @gtsonkov, cela m'aide vraiment beaucoup: D