2017-01-10 4 views
0
  1. こんにちは、私は表示されたテキストボックス内の各文字の間に 'スペース'を追加する必要があります。C#テキストボックスに 'space'を追加する

  2. 彼を推測するために、私は、ユーザーにこのHe__oようなマスクされた単語を与えていると私は私がランダムに'_'

    char[] partialWord = word.ToCharArray(); 
    
        int numberOfCharsToHide = word.Length/2;   //divide word length by 2 to get chars to hide 
        Random randomNumberGenerator = new Random();  //generate rand number 
        HashSet<int> maskedIndices = new HashSet<int>(); //This is to make sure that I select unique indices to hide. Hashset helps in achieving this 
        for (int i = 0; i < numberOfCharsToHide; i++)  //counter until it reaches words to hide 
        { 
         int rIndex = randomNumberGenerator.Next(0, word.Length);  //init rindex 
         while (!maskedIndices.Add(rIndex)) 
         { 
          rIndex = randomNumberGenerator.Next(0, word.Length); //This is to make sure that I select unique indices to hide. Hashset helps in achieving this 
         } 
         partialWord[rIndex] = '_';      //replace with _ 
        } 
        return new string(partialWord); 
    
  3. で文字を置き換えるために、次のコードを使用しています H e _ _ o

  4. にこれを変換したいです

  5. 私は試しました:partialWord[rIndex] = '_ ';しかし、これはエラー "文字が多すぎます"

  6. 私は試してみました:partialWord[rIndex] = "_ ";これはエラーを返します "タイプ文字列をcharに変換できません。

どのように私は各文字間のスペースを達成するために進めることができますか?

おかげ

+0

(私の知る限りでは)重複しますが、あなたをグーグルでのビットではありませんが見つかりましたでしょう:http://stackoverflow.com/questions/7189293/add-spaces-between-the-characters-ofを-a-string-in-javaこれはループをほぼ直接コピーすることができます。 – VinKel

答えて

2

次のコードは、実行する必要があります。

はここStringBuilderを持つソリューションです。私はコードがかなり自明であると思うが、コードの理由や方法について何かが不明であるかどうか尋ねることは自由である。

// char[] partialWord is used from question code 
char[] result = new char[(partialWord.Length * 2) - 1]; 
for(int i = 0; i < result.Length; i++) 
{ 
    result[i] = i % 2 == 0 ? partialWord[i/2] : ' '; 
} 
return new string(result); 
+0

あなたの洞察力に感謝@ prof1990。 –

+0

'result [i] = i%2 == 0 'という行にコメントしていただけますか? partialWord [i/2]: ''; '。私は 'result [i] = i%2 == 0 'の意味を完全に理解していません。 –

+0

これを実装したとき、このコードは元のコードを変更しています。未知の文字または '_'の前に 'int numberOfCharsToHide = word.Length/2;があったのに対し、未知の文字は1つだけ残っていました。 ' –

2

結果の文字列が長く、元の文字列よりもあるので、その長さが一定であるため、1つだけchar配列を使用することはできません。あなたが求めるよう

var builder = new StringBuilder(word); 
for (int i = 0 ; i < word.Length ; i++) { 
    builder.Insert(i * 2, " "); 
} 
return builder.ToString().TrimStart(' '); // TrimStart is called here to remove the leading whitespace. If you want to keep it, delete the call. 
+0

最後の文字列の長さを「知っている」ため、char配列を使用できます。 – prof1990

+0

@ prof1990はい、これは2つのchar配列で行うことができますが、1つではできません。だから私は "_a_ char配列を使うことはできない"と言ったのです。私はもっ​​と個人的にStringBuilderを使いたい。 – Sweeper

+0

はそれぞれ独自のものですが、ただ一つのchar配列を使って行えないという答えを明確にすることをお勧めしますか? – prof1990

関連する問題