【问题标题】:Replace multiple characters in a string with different characters用不同的字符替换字符串中的多个字符
【发布时间】:2020-06-02 03:26:32
【问题描述】:

我正在将列表转换为字符串,我想知道是否有更简化的方法来用不同的字符替换多个字符。我正在用 C# 编码,这就是我的列表的样子:

[0]: [Key1, Value1]
[1]: [Key2, Value2]
[2]: [Key3, Value3]
...

所以基本上,我想用 "" 替换 "、" w/ "=" 和 "[]" 来实现这种格式:

Key1=Value1
Key2=Value2
Key3=Value3
...

我已经使用下面的代码获得了这种格式,我有点担心我过度使用了 Replace 命令。

string out = string.Join("\n", listOfLines).Replace(", ", "=").Replace("[", "").Replace("]","");

我找到了一个类似的question,但它确实指定所有字符都只替换为“\n”。

任何帮助将不胜感激。谢谢!

【问题讨论】:

  • [Key1, Value1] 是来自源的字符串,还是将对象转换为字符串表示的结果?
  • @nhahtdh 它实际上是一个转换为列表然后转换为字符串的字典。这是我能想到的唯一一种可能会产生字符串输出的方法。
  • 如果键或值包含, 或],数据会是什么样子?即如果我的线路是[7]: [Foo, Bar], Waz]。这里的关键和价值是什么?
  • @Enigmativity 所有数据都有特定的格式。一切都写成 [Foo, bar] 代表一个简单的(键,值)对
  • @ros_beginner - 当您说“简单”时,您能否描述一下什么是值键以及什么是有效值?

标签: c# string list replace


【解决方案1】:

由于您在评论中提到数据最初来自字典,因此您可以遍历字典并根据需要格式化数据。

带有Dictionary<string, object>的示例代码:

var dict = new Dictionary<string, object>();
dict.Add("key1", 1);
dict.Add("key2", "string");
dict.Add("key3", true);
dict.Add("key4", new DateTime(2020, 1, 1));

foreach (KeyValuePair<string, object> kv in dict) {
    Console.WriteLine(string.Format("{0}={1}", kv.Key, kv.Value.ToString()));
}

【讨论】:

  • 嗨,谢谢。这非常简单,但我的代码需要。感谢您花一些时间帮助我。欣赏!
【解决方案2】:

您可以在Regex 的帮助下避开Replace。

Regex pattern = new Regex(@"[\[,\]]");
string outval = pattern.Replace(string.Join("\n", listOfLines), "")
                       .Replace(", ", "=");

【讨论】:

  • 嗨,这实际上很有帮助,但我不喜欢多次使用 Replace 命令。就像我说的那样,我认为我过度使用了这种方法 XD。感谢您的宝贵时间。
  • @ros_beginner 随时欢迎您。它是关于有不同的想法和方式。
【解决方案3】:

您可以使用类似的扩展方法:

    public static IEnumerable<char> ReplaceMultiple(this IEnumerable<char> input, Dictionary<char, char> replaces) 
    {
        foreach(var character in input)
            yield return replaces.ContainsKey(character) ? replaces[character] : character;
    }

但我个人认为,如果要替换的字符少于 6-7 个,则使用多个 Replaces 更具可读性。

【讨论】:

    猜你喜欢
    • 2022-12-15
    • 2020-08-31
    • 2017-01-06
    • 2021-10-23
    • 1970-01-01
    • 2011-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多