【问题标题】:C# Split string for dictionary use [closed]C#拆分字符串以供字典使用[关闭]
【发布时间】:2020-01-01 23:39:44
【问题描述】:

我的旧项目打开一个文件,用下面的代码读取参数。

但对于我的新项目,我需要通过字符串(而不是文件)完成此操作,但事实证明这对我来说要困难得多。

我现在需要找到一个解决方案,我可以在其中使用 data["parameter"] 从字符串中读取参数。我的目标是,我不需要使用文件。

感谢您的帮助

-

file.txt

username = xela
name = Alex
Doab = 178199
zip = 88911

C# 代码:

var data = File
    .ReadAllLines(Path.GetTempPath() + "file.txt")
    .Select(x => x.Split('='))
    .Where(x => x.Length > 1)
    .ToDictionary(x => x[0].Trim(), x => x[1]);

//Get data
Textbox.Text = data["name"];
Textbox1.Text = data["zip"];

输出

Textbox Output would be "Alex"
Textbox1 Output would be "88911"

解决方案

var data = @"username = xela
      name = Alex
      Doab = 178199
      zip = 88911"
        .Split('\n').ToArray()
        .ToDictionary(
          x => x.Split('=')[0].Trim(), 
          x => x.Split('=')[1].Trim(' ', '\r'))

;

【问题讨论】:

  • 请显示一个示例字符串。
  • 那么到底是什么问题呢?将File.ReadAllLines(...) 替换为由新行分隔的字符串(例如yourString.Split('\n'),当然您还需要检查是否还有\r)。
  • @RenéVogt 很抱歉,我无法关注你。你能帮我多一点吗?

标签: c# .net string dictionary split


【解决方案1】:

这个简单的单线就可以做到:

File.ReadLines(Path.GetTempPath() + "file.txt")
  .ToDictionary(
    x => x.Split('=')[0].Trim(), 
    x => x.Split('=')[1].Trim());

或者如果源是字符串:

var data = @"username = xela
      name = Alex
      Doab = 178199
      zip = 88911"
        .Split('\n')
        .ToDictionary(
          x => x.Split('=')[0].Trim(), 
          x => x.Split('=')[1].Trim(' ', '\r'))

;

【讨论】:

  • 但问题是,我不想使用文件来解决问题。还是谢谢你。
  • 为什么?您必须阅读文件的内容吗?
  • 不,我希望从字符串中完成。我以前的一个项目曾经从一个额外创建的文件中完成。这是出于安全考虑。
  • 我更新了答案以展示如何拆分一个简单的字符串
  • 是否有换行符?我需要知道分隔符。
猜你喜欢
  • 1970-01-01
  • 2018-06-09
  • 1970-01-01
  • 2016-05-21
  • 1970-01-01
  • 1970-01-01
  • 2021-03-30
  • 2016-07-05
相关资源
最近更新 更多