[英]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
有人可以幫忙嗎?
=
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)"
一些關鍵的想法:
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.