Comment vérifier si la chaîne de caractère est un espace?

Je viens de commencer la programmation en C#. Je suis en train de construire un simple Vigenere texte outil de cryptage de car un projet personnel.

Mon problème devrait être très facile à corriger, mais c'est vraiment en insistant, me à trouver l'erreur. Dans mon code je suis en train de faire une vérification simple pour voir si oui ou non le personnage dans mon string est un espace; j'ai mis en place mon instruction si encore il saute le premier test et de passer à l'autre si, même si le premier test est vrai. Id vraiment avoir de l'aide sur celui-ci.

Mon problème se situe en bas.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
public class fun2013
{
public static void Main()
{
Console.WriteLine("fun 2013");
string UserName;
do
{
Console.Write("LOGIN//: ");
UserName = Console.ReadLine();
}
while(UserName != "Max");
Console.WriteLine(("Hello ") + (UserName) + (", enter your key below."));
//USER ENTERS TEXT AT THIS POINT
string loweredPass = Console.ReadLine().ToLower();
Console.WriteLine("Changing CASE...");
Console.WriteLine(loweredPass);
string Strippedpass = loweredPass.Replace(" ","");
Console.WriteLine("STRIPPING SPACES...");
Console.WriteLine(Strippedpass);
int passLength = Strippedpass.Length;
Console.WriteLine("Enter your message below.");
string userMessage = Console.ReadLine();
int MessageLength = userMessage.Length;
//BEGIN PROCESSING STRINGS INTO ARRAYS
string temp = "";
StringBuilder bcon = new StringBuilder();
char [] passArray = Strippedpass.ToCharArray();
char [] messArray = userMessage.ToCharArray();
string letterf = "";
for(int i=0, j=0; j < (MessageLength); i++, j++)    //i used for key array, j used for message length
{
>>> if (messArray[i].ToString() == " ")
{
letterf = " ";
}
else if (messArray[i].ToString() != " ")
{
letterf = passArray[i].ToString();
}
if (i >= (passLength-1))    //array starts at value 0, length check starts at 1. Subtract 1 to keep them equal
{i = -1;}   //-1 is used so it will go back to value of 0 on next loop
temp = letterf;
bcon.Append(temp);
}
Console.WriteLine();
Console.WriteLine(bcon);
Console.WriteLine("Press ENTER to continue...");
Console.ReadLine(); //KILL APPLICATION
}
}

Merci pour l'aide tout le monde, mais après une inspection plus poussée, j'ai remarqué, j'ai fait une erreur dans ma boucle for. J'ai été la réinitialisation du message lecteur de réseau en utilisant le même intervalle que la clé array (int i). Je l'ai changé pour utiliser le bon nombre entier, "j". J'ai aussi mis le "temp" de la chaîne de mise à jour et le générateur de chaîne dans chaque instruction if dans la boucle. Il fonctionne maintenant correctement.

    for (int i=0, j=0; j < (MessageLength); i++, j++)    //i used for key array, j used for message length
{
if (messArray[j].ToString() != " ")
{
letterf = passArray[i].ToString();
temp = letterf;
bcon.Append(temp);
}
else if (messArray[j].ToString() == " ")
{
letterf = " ";
temp = letterf;
bcon.Append(temp);
}
if (i >= (passLength-1))    //array starts at value 0, length check starts at 1. Subtract 1 to keep them equal
{i = -1;}   //-1 is used so it will go back to value of 0 on next loop
}
Je suggère de le faire fonctionner pour les cas les plus simples d'abord, comme une clé de "b" et un message du genre "bonjour". Ensuite, allez à tenir compte de l'allongement de touches, puis de caractères non-lettre.
Votre code ne renvoie les lettres de la clé, par exemple, si j'utilise "a" comme clé et "bonjour" comme message, c'sorties "aaaaa" quand il doit la sortie de "bonjour", de la même façon ("ab", "bonjour")->" - abeba". C'est sans aucun doute pas ce qu'est un chiffrement de Vigenère est censé faire.

OriginalL'auteur ninjatogo | 2013-10-20