如何将String分成chars

Asy*_*syk 3 c# string parsing letters

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;
}
Run Code Online (Sandbox Code Playgroud)

因此,如果关键字是"Hello".我希望这个输出/ h/e/l/l/o但是目前它只输出最后一个字符,在这种情况下/ o

有人可以帮忙吗?

pol*_*nts 6

=vs +=StringvsStringBuilder

你的问题在于这一行:

 kw = "/"+letters[i];
Run Code Online (Sandbox Code Playgroud)

这是一个直接赋值,将覆盖kw上一次迭代的值.也许你想要+=.然而,在这一点上,你需要知道StringBuilder,为什么这样做+=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)"
Run Code Online (Sandbox Code Playgroud)

一些关键的想法:

  • 除非您需要显式索引,否则请使用foreach循环
  • 在循环中构建字符串时,请使用 StringBuilder
  • 正确使用时,正则表达式很棒!

参考

附件