【问题标题】:How to split string and convert to int如何拆分字符串并转换为int
【发布时间】:2016-02-29 23:33:29
【问题描述】:

基本上可以说我用过这个:

string[] result = File.ReadAllText("C:\\file.txt");

.txt 文件中包含以下单词/值(区分大小写):

Zack 2 5 5
Ben 5 3 4
Dom 2 4 6 

目前我知道读取的内容将存储在字符串数组中,其中包括名称和数字。

如何拆分它们以便名称在一个数组中并将数字转换为 int 数组?基本上将数字和名称分开。

【问题讨论】:

  • 您似乎已经知道“数组”、“拆分”和“转换”这些术语。你能展示一下你尝试过的东西吗?您可以从修改代码开始,例如 Easy string parsing,通过“C# split string parse”找到。
  • 好吧,我能够将文件读入结果字符串,但在不使用 stackoverflow 的情况下就可以了。我现在没有代码(在不同的计算机上),所以从我所做的事情来看,我只是将结果字符串拆分,它位于另一个名为 array0 的字符串数组中,但问题是我如何拆分数字名字?他们还在一起。字符串形式
  • 就像第一次一样,将文件中的文本拆分为行后,您可以将每一行拆分为单独的元素。 File 类中还有一些方法可以让您将文件作为字符串数组读取。所以你可以跳过第一步。无论如何,考虑到这个网站的快速性质,问一个“离线”问题并不是很有用。当你再次坐在你的开发机器后面时,试着用更多的代码来修改你的问题,并用你所拥有的来更新你的问题。
  • 好的,我会记住这一点。谢谢不知道你可以分裂第二次。

标签: c# arrays string int


【解决方案1】:

循环遍历每个项目,按空格分隔,使用第一个值作为键,然后使用其余值创建整数数组。

string[] result = { "Zack 2 5 5", "Ben 5 3 4", "Dom 2 4 6" };
var lookup = result.ToDictionary(
    key => key.Split(' ').First(), // first is name, ignore rest
    ints => ints.Split(' ')
        .Skip(1) // skip the name, ints are the rest
        .Select(i => int.Parse(i))
        .ToArray());
foreach (var kvp in lookup)
    Console.WriteLine(kvp.Key + " - " + string.Join(",", kvp.Value));

输出:

Zack - 2,5,5
Ben - 5,3,4
Dom - 2,4,6

我使用 Dictionary 作为生成的列表。这是假设result 数组中的每个项目都有一个唯一的名称值。如果有重复项,则需要对其进行修改以附加新的 int 值或使用字典以外的其他内容来保留解析的值。

您可以查看this SO thread 了解字典是否区分大小写(它们不区分大小写)。

【讨论】:

    【解决方案2】:

    对于字符数组:

    string charsArray = new String(result.ToCharArray().Where(c => Char.IsLetter(c)).ToArray());
    

    对于数字数组;

    string NumbersArray = new String(result.ToCharArray().Where(c => Char.IsDigit(c)).ToArray());
    

    决定何时以及如何使用它们。祝你好运

    • 一种使用方式是每行。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-25
      • 2010-10-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多