第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何將數(shù)組中的字符串連接成一個字符串并將其顯示在控制臺中?

如何將數(shù)組中的字符串連接成一個字符串并將其顯示在控制臺中?

C#
夢里花落0921 2023-12-17 16:59:32
我正在努力學(xué)習(xí)C#。我已經(jīng)了解Python。我想用 C# 復(fù)制我用 Python 編寫的一個簡單的密碼生成器程序。我的問題是我不知道如何將字符連接到一個字符串中以便我可以顯示它。當(dāng)我嘗試顯示它時,我只是在密碼字符應(yīng)有的位置出現(xiàn)空格。在Python中我可以做到這一點(diǎn)password = []#will have random items appended by generator codes = ''.join(password)#makes one stringprint(s)#printsnamespace learning{    public static class PasswordGenerator    {        private static string Letters = "abcdefghijklmnopqrstuvwxyz";        private static string Numbers = "1234567890";        private static string Symbols = "!@#$%^&*()";        public static string Generate()        {            string[] letters = new string[10];            string[] choice = { "letter", "number", "symbol" };            string[] UL = { "uper", "lower" };            string get;            char c;            for (int i = 0; i <= 9; i++)            {                get = Rand.RandString(choice);                if (get == "letter")                {                    c = Rand.RandChar(Letters);                    get = Rand.RandString(UL);                    if (get == "uper")                    {                        c = char.ToUpper(c);                        letters.Append(c.ToString());                    }                    else                    {                        letters.Append(c.ToString());                    }                }                if (get == "number")                {                    c = Rand.RandChar(Numbers);                    letters.Append(c.ToString());                }                if (get == "symbol")                {                    c = Rand.RandChar(Symbols);                    letters.Append(c.ToString());                }            }            return String.Join(",", letters);        }    }當(dāng)我運(yùn)行代碼時,我調(diào)用Console.WriteLine(PasswordGenerator.Generate()) 但它不會打印我的密碼。它只會打印一些逗號,并在密碼中的字符應(yīng)有的位置包含空格。我需要它來顯示我的密碼。我究竟做錯了什么?我怎樣才能讓它顯示我的密碼?
查看完整描述

3 回答

?
有只小跳蛙

TA貢獻(xiàn)1824條經(jīng)驗(yàn) 獲得超8個贊

當(dāng)您嘗試letters.Append時,您正在嘗試追加一個數(shù)組,這是不可能的,因?yàn)樗枪潭ㄩL度的。您可以使用List<String>,但在這種特殊情況下,您可以使用專門的 .Net 類,稱為?StringBuilder。

由于字符串是不可變的,因此在需要對字符串執(zhí)行重復(fù)修改(例如向其附加值)的情況下,與創(chuàng)建新 String 對象相關(guān)的開銷可能會很高。這就是 StringBuilder 發(fā)揮作用的地方。

var?letters?=?new?StringBuilder();

現(xiàn)在,您可以附加字符而無需進(jìn)行 ToString() 轉(zhuǎn)換。

letters.Append(c)

最后,要從 StringBuilder 返回字符串,可以使用 ToString 方法。

return?letters.ToString();


查看完整回答
反對 回復(fù) 2023-12-17
?
哆啦的時光機(jī)

TA貢獻(xiàn)1779條經(jīng)驗(yàn) 獲得超6個贊

要添加到其他答案中,您的 if 也有問題,它們應(yīng)該是 if then else 或 switch如果您想保持正確的長度


小重構(gòu)


使用迭代器方法和開關(guān)


public static IEnumerable<char> Generate(int size, string[] choice, string[] ul)

{

   for (var i = 0; i < size; i++)

   {

      switch (Rand.RandString(choice))

      {

         case "letter":

               if (Rand.RandString(ul) == "uper")

                  yield return char.ToUpper(Rand.RandChar(Letters));

               else

                  yield return Rand.RandChar(Letters);

               break;               

         case "number":

            yield return Rand.RandChar(Numbers);

            break;

         case "symbol":

            yield return Rand.RandChar(Symbols);

            break;

      }

   }

}

用法


string[] choice = { "letter", "number", "symbol" };

string[] UL = { "uper", "lower" };

Console.WriteLine(string.Concat(Generate(10, choice, UL)));

演示在這里


https://dotnetfiddle.net/qSHimm


或者另一種方式

public class Rand

{

   private static Random Generator = new Random();

   public static T Get<T>(T[] items) //Choose a random char from string

      =>  items[Generator.Next(items.Length)];


}

private static string Letters = "abcdefghijklmnopqrstuvwxyz";

private static string Numbers = "1234567890";

private static string Symbols = "!@#$%^&*()";


public enum Options

{

   Upper,Lower, Numbers, Symbols

}


public static IEnumerable<char> Generate(int size, params Options[] options)

{

   for (var i = 0; i < size; i++)

   {

      switch (Rand.Get(options))

      {

         case Options.Upper: yield return char.ToUpper(Rand.Get(Letters.ToCharArray())); break;

         case Options.Lower: yield return Rand.Get(Letters.ToCharArray()); break;

         case Options.Numbers: yield return Rand.Get(Numbers.ToCharArray()); break;

         case Options.Symbols: yield return Rand.Get(Symbols.ToCharArray());break;

      }

   }

}

用法


Console.WriteLine(string.Concat(Generate(10, Options.Upper,Options.Numbers)));

輸出


R0P76UYO1D

或者另一種方式

public static string Generate(int size, params Options[] options)

   => string.Concat(Enumerable.Repeat(0,size).Select(x => GetChar(options)));


private static char GetChar(params Options[] options)

{

   switch (Rand.Get(options))

   {

      case Options.Upper:  return char.ToUpper(Rand.Get(Letters.ToCharArray())); ;

      case Options.Lower: return Rand.Get(Letters.ToCharArray()); 

      case Options.Numbers:  return Rand.Get(Numbers.ToCharArray()); 

      case Options.Symbols:  return Rand.Get(Symbols.ToCharArray());

      default: throw new ArgumentOutOfRangeException();

   }

}

用法


Console.WriteLine(Generate(10, Options.Upper,Options.Numbers));


查看完整回答
反對 回復(fù) 2023-12-17
?
胡說叔叔

TA貢獻(xiàn)1804條經(jīng)驗(yàn) 獲得超8個贊

對于生成隨機(jī)密碼來說,這看起來過于復(fù)雜。您可以使用下面的代碼并使用可選參數(shù)(如果它們不向函數(shù)傳遞任何內(nèi)容,則會生成長度為 15 的參數(shù))。


private static string CreateRandomPassword(int length = 15)

{

? ? string validChars = "ABCDEFGHJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*?_-";

? ? Random random = new Random();


? ? // Select one random character at a time from the string??

? ? // and create an array of chars??

? ? char[] chars = new char[length];


? ? for (int i = 0; i < length; i++)

? ? {

? ? ? ? chars[i] = validChars[random.Next(0, validChars.Length)];

? ? }

? ? return new string(chars);

}

查看完整回答
反對 回復(fù) 2023-12-17
  • 3 回答
  • 0 關(guān)注
  • 214 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號