【问题标题】:Create a new String with Duplicate Letters创建一个包含重复字母的新字符串
【发布时间】:2013-01-30 20:57:45
【问题描述】:

我正在尝试创建一个字符串,将原始字母中的重复字母插入修改后的字母中。例如,一次运行的输出将是:

原词:

堆栈

输出:

堆栈,堆栈,堆栈,堆栈,堆栈

这有意义吗?到目前为止,我有这个,我觉得我很接近,但我用了错误的方法来重新组装字符串。任何帮助将不胜感激:

 // Use ToCharArray to convert string to array.                
 char[] array = originalWord.ToCharArray();

 // Loop through array.
 for (int i = 0; i < array.Length; i++)
 {
    // Get character from array.
    char letter = array[i];
    string result = array.ToString();
    string result2 = string.Join("", result.Select(x => x + letter));
    Console.Write(result2);
 }

【问题讨论】:

  • 确实没有必要将字符串转换为 char 数组。无论如何,您都可以像数组一样索引字符串。所以你可以用char letter = originalWord[i]代替char letter = array[i]
  • @AppDeveloper 在对问题的评论中永久链接到您的答案似乎危险地接近垃圾邮件......
  • @LeonNewswanger - 抱歉!

标签: c# arrays string tostring to-char


【解决方案1】:

这应该可行:

var original = "stack";
for (int i = 0; i < original.Length; i++)
    Console.WriteLine(original.Insert(i, original[i].ToString()));

【讨论】:

  • 谢谢托马斯。完美运行。
【解决方案2】:

您可以使用String.Insert 将给定索引处的字符串插入到另一个字符串中。

IEnumerable<string> strings = originalWord
    .Select((c, idx) => originalWord.Insert(idx, c.ToString()));

【讨论】:

    【解决方案3】:

    固定:

            string originalWord = "stack";
            // Use ToCharArray to convert string to array.                
            char[] array = originalWord.ToCharArray();
    
            // Loop through array.
            for (int i = 0; i < array.Length; i++)
            {
                // Get character from array.
                char letter = array[i];
                string result = originalWord.Insert(i, letter.ToString(CultureInfo.InvariantCulture));
                Console.WriteLine(result);
            }
    

    Linq 方式:

    IEnumerable<string> words = originalWord.Select((letter, i) => originalWord.Insert(i, letter.ToString(CultureInfo.InvariantCulture)));
    

    【讨论】:

      【解决方案4】:

      你可以使用String.Insert()这样的方法;

      string s = "stack";
      
      for (int i = 0; i < s.Length; i++)
      {
         Console.WriteLine (s.Insert(i, s[i].ToString()));
      }
      

      这是DEMO

      天哪,我写的时候已经添加了 3 个答案。妈的。。

      【讨论】:

      • Thomas 回答的完全相同
      • @Forty-2 不幸的是。当我写它时,人们添加了他们的答案,而我的浏览器没有更新它们。我会删除它。
      猜你喜欢
      • 2011-08-31
      • 2011-02-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多