如何将String分成chars

时间:2010-06-22 01:32:03

标签: 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;
}

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

有人可以帮忙吗?

4 个答案:

答案 0 :(得分:6)

<{1}} vs =+= vs String 上的

你的问题在这一行:

StringBuilder

这是一个直接赋值,将覆盖上一次迭代中 kw = "/"+letters[i]; 的值。也许你想要kw。但是,此时您需要了解+=以及为什么在循环中使用StringBuilder执行+=会导致性能下降。

相关问题


关于正则表达式

如果你正在学习正则表达式,你也可以用一行来完成。您只需匹配每个字符String并将其替换为x

参考


实施例

这是一个应该说明的片段:

/x

一些关键想法:

  • 除非您需要显式索引,否则请使用foreach循环
  • 在循环中构建字符串时,请使用 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)"
  • 正确使用时,正则表达式很棒!

参考

附件

答案 1 :(得分:1)

或者,如果您使用.NET 4.0,则可以执行此操作:

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

答案 2 :(得分:0)

使用此

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;
}

答案 3 :(得分:0)

我试图通过使用字符来优化它以减少使用内存。

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);
}