【问题标题】:How can I turning that number of string?我怎样才能转动那个数量的字符串?
【发布时间】:2021-01-23 15:36:56
【问题描述】:
public static void Main(string[] args)
{
    Console.WriteLine("Enter string: ");
    string st= Console.ReadLine();
    Console.WriteLine(Alpha(st));
}
public static string Alpha(string str)
{
    int[] nums = new int[str.Length / 2]; // 4 5 2 
    string num = "";
    string nw = "";
    string harfler = " ";
    string[] harflerr = new string[str.Length / 2]; // A B C
     
    for(int i = 0; i < str.Length; i += 2)
    {
        harfler += str[i].ToString();
    }
    for(int i = 1; i < str.Length; i+=2)
    {
        num += str[i].ToString();
    }
    for(int i = 0; i < num.Length; i++)
    {
        nums[i] += num[i];
    }
    for(int i = 0; i < harflerr.Length; i++)
    {
        harflerr[i] += harfler[i];
    }
    for(int i = 0; i < harflerr.Length; i++)
    {
       for(int j = 0; j < nums[i]; j++)
        {
            nw += harflerr[i];
        }
    }

    return nw;
}

输出必须是这样的:

"A4B5C2" ➞ "AAAABBBBBCC"

"C2F1E5" ➞ "CCFEEEEE"

"T4S2V2" ➞ "TTTTSSVV"

"A1B2C3D4" ➞ "ABBCCCDDDD"

为什么 nums [i] // 例如在 nums [i] 部分返回多达 4 个//。

【问题讨论】:

  • 为什么不使用调试器来单步调试你的代码呢?它将帮助您找到代码中的缺陷。
  • 阅读this article 了解调试代码的技巧。
  • 当您执行nums[i] += num[i]; 时,会将字符'1' 的ASCII 值添加到nums[i]。仅仅因为字符恰好是一个数字并不意味着它的处理方式与表示字母的字符有任何不同。
  • harfler 的开头有一个空格,因此您将看到该字符输出到屏幕,而不是输入字符串中的第一个字符。

标签: c# arrays string


【解决方案1】:

出于两个原因,我建议为此使用正则表达式。首先是当用户输入A12B7A1BC4 之类的内容时会发生什么?您的方法将失败,因为您假设每个字母后面只有一个数字。 第二个原因是纯粹的可读性。使用正则表达式过滤所有内容比手动逐个字符更容易。


所以首先像这样定义你的正则表达式:(?'pair'[A-Za-z]{1}\d{0,})

使用此表达式将检索后面有字母和可能数字的对。然后,您可以遍历所有对并为每个对创建新字符串。

string result = "";
foreach(string pair in pairs)
{
    char character = pair[0];
    int length = 1;
    if (pair.Length > 1)
    {
        length = int.Parse(pair.Substring(1));
    }
    result += new String(character, length);
}
Console.WriteLine(result);

你可以在rextester在线测试这个

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-04-13
    • 1970-01-01
    • 1970-01-01
    • 2014-12-14
    • 1970-01-01
    • 1970-01-01
    • 2021-01-23
    • 1970-01-01
    相关资源
    最近更新 更多