簡體   English   中英

如何將String分成chars

[英]How to separate String into chars

public static string kw;

public String parse(String keyword)
{
    this.keyword = keyword;
    char[] letters = keyword.ToCharArray();
    string g;

    long length = System.Convert.ToInt64(keyword.Length.ToString());
    for (int i = 0; i <= length-1; i++)
    {
        kw = "/"+letters[i];
    }
    return kw;
}

因此,如果關鍵字是“Hello”。 我希望這個輸出/ h / e / l / l / o但是目前它只輸出最后一個字符,在這種情況下/ o

有人可以幫忙嗎?

on = vs +=String vs StringBuilder

你的問題在於這一行:

 kw = "/"+letters[i];

這是一個直接賦值,將覆蓋上一次迭代的kw值。 也許你想要+= 但是,此時您需要了解StringBuilder以及為什么在循環中執行+= with String導致性能不佳。

相關問題


關於正則表達式

如果您要學習正則表達式,也可以使用一行來完成。 您只需匹配每個字符x並將其替換為/x

參考


這是一個應該說明的片段:

   string keyword = "hello";

   foreach (char ch in keyword) {
      Console.Write("[" + ch + "]");
   }
   Console.WriteLine();
   // prints "[h][e][l][l][o]"

   StringBuilder sb = new StringBuilder();
   for (int i = 0; i < keyword.Length; i++) {
      sb.Append("<" + keyword[i] + ">");
   }
   Console.WriteLine(sb);
   // prints "<h><e><l><l><o>"

   Console.WriteLine(new Regex(@"(?=.)").Replace(keyword, @"/"));
   // prints "/h/e/l/l/o"

   Console.WriteLine(new Regex(@"(.)").Replace(keyword, @"($1$1)"));
   // prints "(hh)(ee)(ll)(ll)(oo)"

一些關鍵的想法:

  • 除非您需要顯式索引,否則請使用foreach循環
  • 在循環中構建字符串時,請使用StringBuilder
  • 正確使用時,正則表達式很棒!

參考

附件

或者,如果您使用.NET 4.0,則可以執行以下操作:

string someString = "abc";
string result = string.Join("/", (IEnumerable<char>)someString);

用這個

public String parse(String keyword)
{
    if (string.IsNullOrEmpty(keyword))
        return string.Empty;

    var retVal = (from v in keyword.ToArray()
                    select v.ToString())
                    .Aggregate((a, b) => a + "/" +b);

    return retVal;
}

我嘗試通過使用字符來優化它以減少使用內存。

public string Parse(string input)
{
    char[] arrResult = new char[input.Length*2];
    int i = 0;
    Array.ForEach<char>(input.ToCharArray(), delegate(char c)
                                                {
                                                    arrResult[i++] = '/';
                                                    arrResult[i++] = c;
                                                });
    return new string(arrResult);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM