【问题标题】:How to add a unique string before and after a character in a string如何在字符串中的字符前后添加唯一字符串
【发布时间】:2023-01-19 20:22:44
【问题描述】:

我有一个字符串“AAAA”,我需要在这个字符串的每个字符之前添加某些行。 例如,给定

string original = "AAAA". 
string firstStringBeforeChar = "B"
string firststringAfterChar = "C"

转换后,我想得到一个字符串:

string converted = "BACAAA"

对于每个索引,原始字符串都有自己的 stringBeforeChar 和 stringAfterChar。最终输出应该是这样的:

string converted = "BACBACBACBAC"

其中 B 和 C 是原始字符串中每个字符的唯一字符串。我该怎么做呢?

【问题讨论】:

  • 有多种方法可以解决这个问题。你试过什么了?
  • @Tomsen 有一个选项可以编写一个方法 string Replacement(string original, string first, string second) => first + original + second 并且可能遍历每个元素并替换它。你能建议什么方法?
  • string converted = string.Concat(original.Select(c => firstStringBeforeChar + c + firststringAfterChar));

标签: c#


【解决方案1】:

您可以在一行代码中完成此操作。

string converted = original.Replace(original[0].ToString(), $"{firstStringBeforeChar}{original[0]}{firststringAfterChar}");

【讨论】:

    【解决方案2】:

    您可以使用循环遍历原始字符串中的每个字符,并使用 StringBuilder 类在每个字符前后附加适当的字符串

    例子:

    using System.Text;
    
    string original = "AAAA";
    string[] stringBeforeChar = {"B", "D", "E", "F"};
    string[] stringAfterChar = {"C", "G", "H", "I"};
    
    StringBuilder sb = new StringBuilder();
    
    for (int i = 0; i < original.Length; i++)
    {
        sb.Append(stringBeforeChar[i]);
        sb.Append(original[i]);
        sb.Append(stringAfterChar[i]);
    }
    
    string converted = sb.ToString();
    Console.WriteLine(converted);
    Console.WriteLine(converted);
    

    输出:

    BACDAGEAHFAI
    

    【讨论】:

      【解决方案3】:

      如果您要问的话,您可以这样做:

          string original = "AAAA";
          string firstStringBeforeCharacter = "B";
          string firstStringAfterCharacter = "C";
          var result = new StringBuilder();
          foreach(var c in original)
          {
              result.Append($"{firstStringBeforeCharacter}{c}{firstStringAfterCharacter}");
          }
      
          Console.WriteLine(result.ToString());
      

      【讨论】:

        【解决方案4】:

        您可以使用循环遍历原始字符串中的每个字符,并且对于每个字符,将其前后的唯一字符串连接起来,并将其追加到新字符串中。 StringBuilder 类可用于高效地构建新字符串。下面是 C# 中的示例实现:

        string original = "AAAA";
        string firstStringBeforeChar = "B";
        string firstStringAfterChar = "C";
        
        StringBuilder sb = new StringBuilder();
        
        foreach (char c in original)
        {
            sb.Append(firstStringBeforeChar);
            sb.Append(c);
            sb.Append(firstStringAfterChar);
        }
        
        string converted = sb.ToString();
        

        如果你想为每个字符使用不同的 stringBeforeChar 和 stringAfterChar 你可以使用另一个循环并使用索引计数器访问当前字符的索引,你可以有一个 stringBeforeChar 和 stringAfterChar 的数组并使用索引访问当前的 stringBeforeChar 和字符串后字符。

        string[] stringBeforeChar = new string[] { "B", "D", "E", "F" };
        string[] stringAfterChar = new string[] { "C", "G", "H", "I" };
        
        for (int i = 0; i < original.Length; i++)
        {
            sb.Append(stringBeforeChar[i]);
            sb.Append(original[i]);
            sb.Append(stringAfterChar[i]);
        }
        

        这将在原始字符串的每个字符前后添加唯一的字符串。

        【讨论】:

          【解决方案5】:

          如果你想在前后添加特点你可以试试 Linq:

          如果你想在之前添加肯定char,这里是'A'

          using System.Linq;
          
          ...
          
          var result = string.Concat(original 
            .Select(c => c == 'A'
                       ? $"{firstStringBeforeChar}{c}{firststringAfterChar}"
                       : $"{c}"));
          

          如果你想在之前/之后添加任何字符,删除条件:

          using System.Linq;
          
          ...
          
          var result = string.Concat(original 
            .Select(c => $"{firstStringBeforeChar}{c}{firststringAfterChar}"));
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2017-06-25
            • 1970-01-01
            • 2013-10-19
            • 2020-12-21
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多