.Split分隔每个字符

时间:2014-01-28 17:54:04

标签: 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(',');
    //Debug.Log (dataString[o][0] + " --- " + dataString[o][2]);
}

这是提供此字符串的PHP代码:

PHP

// Send variables for the MySQL database class.
   $database = mysql_connect('X', 'X', 'X') or die('Could not connect: ' . mysql_error());
   mysql_select_db('openfire_scores') or die('Could not select database');

   $query = "SELECT * FROM `scores` ORDER by `score` DESC LIMIT 5";
   $result = mysql_query($query) or die('Query failed: ' . mysql_error());

   $num_results = mysql_num_rows($result);  

   for($i = 0; $i < $num_results; $i++)
   {
        $row = mysql_fetch_array($result); // Automatically advances one row after fetching
        echo $row['id'] . "," . $row['name'] . "," . $row['score'] . "\n";
   }
   >

这是正在使用的表格:

 id  | name     | score |

1    | Player 1 | 5     |

2    | Player 2 | 5     |

3    | Player 3 | 7     |

但是它不是分隔逗号之间的单词,而是分隔包含逗号的每个单个字符并将其放入数组中。 我做错了什么?

修改

我应该提一下这篇帖子的内容:http://answers.unity3d.com/questions/16225/how-can-i-read-data-from-a-text-file-putting-a-lar.html

修改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;


            }

感谢所有帮助人员!

3 个答案:

答案 0 :(得分:0)

您不必镜像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();
}

List类非常强大。如果你在.Net,你应该用它来节省一些麻烦。

答案 1 :(得分:0)

也许我错过了一些东西,但这对我来说很好,也许是一个更好的选择。我尝试从统一答案中重新创建样本。

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(','));
}

如果您需要将字符串列表作为数组,则只需在列表中调用.ToArray()即可。

答案 2 :(得分:0)

您的代码似乎有效但跳过最后一行,除非您打算跳过最后一行,否则应该删除-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]);
    }

数组如下所示:

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