【问题标题】:Moving every character in a string forward one step, alphabetically [closed]按字母顺序将字符串中的每个字符向前移动一步[关闭]
【发布时间】:2019-09-29 20:02:01
【问题描述】:

我正在尝试创建一个控制台程序,使用多种方法将用户输入字符串的每个字母向前移动一步,按字母顺序排列。

到目前为止,我的代码是一个简单的循环,每次输入一个字符,但不会改变任何内容。

输入示例:“abc” 现在的输出示例:9899100 预期输出示例:“bcd”

static void Main(string[] args)
{
   Console.Write("Ange ett ord: ");
   string ord = Console.ReadLine();
   kryptering(ord);
}

public static void kryptering(string p)
{
   int ordTest = p.Length;
   for (int i = 0; i < ordTest; i++)
   {
      int q = p[i] + 1;
      char svar = Convert.ToChar(q);
      Console.Write(q);
   }
}

【问题讨论】:

  • 问题是什么?这似乎是家庭作业。如果您尝试对字符进行排序,该站点中有很多示例。你可以看到stackoverflow.com/questions/6441583/…
  • @ilkerkaran 我希望程序将用户输入的每个字母在字母表中向前移动一步。我需要在循环中添加一些东西,但我不知道什么会使“a”变成“b”这是家庭作业,我只是问一个关于什么可以使它工作的问题。当我在互联网上或在我的学习资料中搜索它时,我找不到任何关于它的信息
  • @Ajoli 字符表示为整数,您可以从/转换为整数并对其进行排序。所以你应该将 1 添加到 char 的 ascii 数并再次将其转换为 char 。既然这是你的作业,你应该做编码练习
  • 您知道输入Zz 会发生什么吗?您只是增加 char 值的幼稚方法会分别给您[(。但也许该任务希望您将它们换成Aa
  • @ilkerkaran 这可以在循环内完成吗? p 现在是一个字符串,但在循环中它会充当一个字符,因为每个循环只有一个字母,对吧?

标签: c# .net


【解决方案1】:

下面的代码可以满足您的需求。但是您需要处理 z->a 转换。因为这是你的作业,所以我故意不做。

public static void kryptering(string p)
{
    int ordTest = p.Length;
    var newArr = new char[ordTest];
    for (int i = 0; i < ordTest; i++)
    {
      newArr[i] = Convert.ToChar(p[i] + 1);     
    }
    Console.Write(new string(newArr));
}

在这里提琴:https://dotnetfiddle.net/XZlbs1

【讨论】:

  • 我相信我成功了。我的主要语言是瑞典语,我们额外字母的 ascii 字符有点歪斜,所以修复不是很漂亮,但它有效。我把它放在你发送的小提琴文件中,如果你想检查它:)
  • 处理 ascii 和文化细节通常很乱 =) 继续练习!
  • 非常感谢您的帮助,非常感谢。你确实节省了我用头撞墙的时间:)
  • @Ajoli,不客气。如果它对您有用,请不要犹豫将其标记为答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-08-30
  • 2015-09-06
  • 2015-05-07
  • 1970-01-01
  • 2017-11-21
  • 1970-01-01
  • 2020-08-11
相关资源
最近更新 更多