Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何拆分一个单词';将字母放入C#中的数组中?_C#_.net_String_Tokenize - Fatal编程技术网

如何拆分一个单词';将字母放入C#中的数组中?

如何拆分一个单词';将字母放入C#中的数组中?,c#,.net,string,tokenize,C#,.net,String,Tokenize,如何在C#中将字符串拆分为字符数组 使用的字符串单词示例为“robot” 程序应打印出: r o b o t 原始代码段: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Diagnostics; using System.IO; using System.Text.RegularExpressions; namespace Testing

如何在C#中将字符串拆分为字符数组

使用的字符串单词示例为“robot”

程序应打印出:

r
o
b
o
t
原始代码段:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Diagnostics;
using System.IO;
using System.Text.RegularExpressions;


namespace Testing
{
class Program
{
    static void Main(string[] args)
    {
        String word = "robot";

        String[] token = word.Split(); // Something should be placed into the () to 
        //print letter by letter??

        foreach (String r in token)
        {
            Console.WriteLine(r);
        }
    }
}
}
如何正确地实现代码?

类实现,因此,要遍历字符串的字母,您只需抓取一个字符,然后一次处理一个字符。一种方法是使用:

如果需要数组中的每个
char
,可以使用:


你是说像这样的事吗

foreach(var alpha in myString.Where(c => Char.IsLetter(c)))
{
    Console.WriteLine(alpha);
}
为什么不是这个

public void WriteLetters(string s)
{
    foreach (char c in s)
    {
        Console.WriteLine(c); 
    }
}
如果确实希望在显式字符数组中看到它,请执行以下操作:

string s = "robot";
char[] charArray = s.ToCharArray();
for (int i = 0; i < charArray.Length; i++)
{
    Console.WriteLine(charArray[i]);
}
如果要打印(每行1个),请执行以下操作:

string s = "robot";
char[] charArray = s.ToCharArray();
for (int i = 0; i < charArray.Length; i++)
{
    Console.WriteLine(charArray[i]);
}
for(int i=0;i
我真的不确定你想做什么,所以我可能太离谱了

如果通过标记化,您的意思是将字符存储在数组中,那么字符串object1中已经有了该字符


1实际上不是真的,因为字符串使用索引器遍历字符值,而在C/C++中,字符串实际上是字符数组。出于我们的目的,我们可以将字符串视为一个字符数组

您试图做得太多了

试试这个:

        String word = "robot";

        foreach (char letter in word)
        {
            Console.WriteLine(letter);
        }
编辑:

要将字符串拆分为字符数组,而不使用循环,可以执行以下操作:
word.tocharray()

可以使用ToArray()方法返回字符数组

string word = "robot";
char[] array = word.ToArray();

似乎每个人都想将字符串转换为字符数组

怎么样

for(int i = 0; i < tmpString.Length; i++)
Console.WriteLine(tmpString[i]);
for(int i=0;i
现在您拥有了字符数组的速度,而不需要制作副本的额外内存

编辑:字符串在内部是一个字符数组,因为字符串是不可变的,所以无法更改其值。但是你可以从这个字符数组中读取。字符串=只读字符数组

string word = "robot";
char[] array = word.ToArray();
我想不出任何理由将字符串转换为Char[],除非您想“编辑”该字符串

long lTicks;
            char[] tmpChar = { 'a', 'b', 'c', 'd', 'e' };
            String tmpString = "abcde";
            char chRead;

            lTicks = DateTime.Now.Ticks;
            for (int i = 0; i < 100000000; i++)
                chRead = tmpChar[i%5];

            Console.WriteLine(((DateTime.Now.Ticks - lTicks) / 10000).ToString());

            lTicks = DateTime.Now.Ticks;
            for (int i = 0; i < 100000000; i++)
                chRead = tmpChar[i % 5];

            Console.WriteLine(((DateTime.Now.Ticks - lTicks) / 10000).ToString());

            lTicks = DateTime.Now.Ticks;
            for (int i = 0; i < 100000000; i++)
                chRead = tmpString[i%5];

            Console.WriteLine(((DateTime.Now.Ticks - lTicks) / 10000).ToString());

            lTicks = DateTime.Now.Ticks;
            for (int i = 0; i < 100000000; i++)
                chRead = tmpString[i % 5];

            Console.WriteLine(((DateTime.Now.Ticks - lTicks) / 10000).ToString());

            Console.ReadLine();
长LTICK;
char[]tmpChar={'a','b','c','d','e'};
字符串tmpString=“abcde”;
炭头;
lTicks=DateTime.Now.Ticks;
对于(int i=0;i<100000000;i++)
chRead=tmpChar[i%5];
Console.WriteLine(((DateTime.Now.Ticks-lTicks)/10000.ToString());
lTicks=DateTime.Now.Ticks;
对于(int i=0;i<100000000;i++)
chRead=tmpChar[i%5];
Console.WriteLine(((DateTime.Now.Ticks-lTicks)/10000.ToString());
lTicks=DateTime.Now.Ticks;
对于(int i=0;i<100000000;i++)
chRead=tmpString[i%5];
Console.WriteLine(((DateTime.Now.Ticks-lTicks)/10000.ToString());
lTicks=DateTime.Now.Ticks;
对于(int i=0;i<100000000;i++)
chRead=tmpString[i%5];
Console.WriteLine(((DateTime.Now.Ticks-lTicks)/10000.ToString());
Console.ReadLine();


有趣的是,字符串实际上始终比Char[]快。我每运行两次,以确保没有影响结果的加载时间问题。编译为带有优化的发行版。对我来说,Char[]每次运行约为1950ms,String每次运行约为1850ms。

你在大多数人会写“字母”的地方使用“字母表”一词可能会让人非常困惑。如果你用
字母
替换
字母
,我认为你的问题更有意义。这就是你想要的词吗?你说的“一个字母一个字母地打印”是什么意思?你说的“标记化”是什么意思?你已经被问了好几次,还没有提供任何反馈。在你这么做之前,你可能会得到同样的解决方案。帮助我们,帮助你@rmx是的,它的字母/字母表。有什么方法来标记这个词吗?@JavaNoob:这对你意味着什么?@Jason如果可能的话,我不想用循环来表示这个词。我需要一个数组中的每个字母。@JavaNoob好的,首先,它是字母/字符。不是字母表。这真的没有任何意义,而且令人困惑,所以请使用正确的词。其次,必须使用循环。Split()函数是使用循环实现的,因此无论您是否知道代码中正在发生循环。如果您真的愿意,可以将循环移动到一个单独的函数中,让它生成并返回一个
char[]
,这样您就不必在Main中看到它,但这就是您所能做的一切。@spartan:您可以使用
word.tocharray()
-见下面我的答案。有什么方法可以标记这个词吗?请注意,
ToArray
String
的扩展方法,您需要使用System.Linq添加
到你的文件。但你为什么要这样做?string实现了
IEnumerable
,在大多数情况下,它可以像char数组一样工作(尤其是在LINQ中)。每个人都在这样做,因为这是他想要的。如果我们只是将字符写入控制台,我在下面的回答中提到了这一点。
string
也是一个对象还是一个字符数组?他想将一个字符串拆分为一个字符数组,即关键部分,以便他们可以输出单个字符。听起来他好像不知道你可以把一个字符串当作一个字符数组来对待,我假设他的问题是理解他不知道自己的选项。字符串是一个存储字符数组的对象,但提供了修改这些字符内容的任何方法。您可以读取,但不能作为字符[]更新。您可以轻松地创建自己的字符串类,而我必须使用C/C++来实现这一点。