C# .分割每个字符
所以我用C代码来分隔字符串行,然后用逗号进一步分隔它们。 我用这两个来分开:C# .分割每个字符,c#,arrays,string,split,C#,Arrays,String,Split,所以我用C代码来分隔字符串行,然后用逗号进一步分隔它们。 我用这两个来分开: dataString = hs_get.text.Split('\n'); stringPairs = new string[dataString.Length][]; for (int o = 0; o < dataString.Length - 1; o++) { Debug.Log (o); stringPairs[o] = dataString[o].Split(','); //D
dataString = hs_get.text.Split('\n');
stringPairs = new string[dataString.Length][];
for (int o = 0; o < dataString.Length - 1; o++)
{
Debug.Log (o);
stringPairs[o] = dataString[o].Split(',');
//Debug.Log (dataString[o][0] + " --- " + dataString[o][2]);
}
但是,它没有将单词分隔在逗号之间,而是将每个字符(包括逗号)分隔,并将其放入数组中。
我做错了什么
编辑
我应该提到的是,我是在这篇文章的基础上建立起来的:
编辑2
所以今天我有了一个突破。这就是我现在使用的代码。我仍然不知道为什么前面的代码不起作用,但是这个代码起作用了
dataString = hs_get.text.Split('\n');
stringPairs = new string[dataString.Length][];
for (int o = 0; o < dataString.Length; o++)
{
string[] trial = dataString[o].Split(',');
stringPairs[o] = trial;
}
dataString=hs_get.text.Split('\n');
stringPairs=新字符串[dataString.Length][];
for(int o=0;o
谢谢大家的帮助 您不必像PHP代码那样镜像 你可以这样写:
private string[][] Work(string hs_get_text) {
var lines = hs_get_text.Split('\n');
int linesLength = lines.Length;
var pairs = new List<string[]>(linesLength);
foreach (var line in lines) {
pairs.Add(line.Split(','));
}
return pairs.ToArray();
}
private string[][]工作(string hs\u get\u text){
var lines=hs_get_text.Split('\n');
int linesLength=行。长度;
变量对=新列表(行长度);
foreach(行中的var行){
pairs.Add(line.Split('),');
}
返回pairs.ToArray();
}
这个班很有势力。如果您使用.Net,您应该使用它来避免一些头痛。也许我遗漏了一些东西,但这对我来说很好,也许是一个更好的选择。我试着从unity答案中重新创建样本
const string hs_get_text = "apple,ball\ncar,dog\negg,fish\ngoat,hat";
var dataString = hs_get_text.Split('\n');
var list = new List<string[]>(dataString.Length - 1);
foreach (string s in dataString)
{
Debug.WriteLine(s);
list.Add(s.Split(','));
}
const string hs\u get\u text=“苹果、球、狗、鱼、帽子”;
var dataString=hs_get_text.Split('\n');
变量列表=新列表(dataString.Length-1);
foreach(数据字符串中的字符串s)
{
Debug.WriteLine(s);
列表.添加(s.Split(',');
}
如果您需要字符串列表成为数组,您可以在列表上调用
.ToArray()
。您的代码看起来正常,但跳过了最后一行,您应该删除-1,除非您打算跳过最后一行。
以下是一个例子:
string text = "1,Player 1,5\n2,Player 2,5\n3,Player 3,7";
string [] dataString = text.Split('\n');
string [][] stringPairs = new string[dataString.Length][];
for (int o = 0; o < dataString.Length; o++)
{
//Debug.Log(o);
stringPairs[o] = dataString[o].Split(',');
//Debug.Log (dataString[o][0] + " --- " + dataString[o][2]);
}
这是什么语言?哦,对不起,没有。这是C#。代码看起来不错-请显示您正在使用的数据。请注意不要使用<代码> o>代码>作为变量名(尤其是索引),因为它看起来像“代码> 0”/代码>代码工作-除非有一些有趣的数据。我看到一个错误,您没有遍历整个dataString数组。您应该将循环更改为for(int o=0;o
hs_get_text
并返回了字符串[][]数组。因此我删除了-1,但通过此代码并记录它,我得到的结果是stringPair[x][1]是“,”。我甚至使用了您的示例字符串文本而不是PHP检索文本。您使用的是.NET的哪个版本?代码返回我在PC上打印的数组。我使用的是.NET 4.0。我目前正在Unity 4中编码,谷歌快速搜索表明Unity 4相当于.NET 3.5。幸运吗?每次通过循环时dataString[o]的内容是什么样子的?我刚才有了一个突破。出于某种原因,代码(如上文原始问题中所述)现在可以工作了。我不知道为什么您的代码或其他任何代码都不起作用。
const string hs_get_text = "apple,ball\ncar,dog\negg,fish\ngoat,hat";
var dataString = hs_get_text.Split('\n');
var list = new List<string[]>(dataString.Length - 1);
foreach (string s in dataString)
{
Debug.WriteLine(s);
list.Add(s.Split(','));
}
string text = "1,Player 1,5\n2,Player 2,5\n3,Player 3,7";
string [] dataString = text.Split('\n');
string [][] stringPairs = new string[dataString.Length][];
for (int o = 0; o < dataString.Length; o++)
{
//Debug.Log(o);
stringPairs[o] = dataString[o].Split(',');
//Debug.Log (dataString[o][0] + " --- " + dataString[o][2]);
}
stringPair[0]
[0]1
[1]Player 1
[2]5
stringPair[1]
[0]2
[1]Player 2
[2]5
stringPair[2]
[0]3
[1]Player 3
[2]7