【问题标题】:How to get specific character in a string?如何获取字符串中的特定字符?
【发布时间】:2019-01-07 00:19:29
【问题描述】:

我有一个问题,我需要遍历一个字符串并单独打印每个字符:

var abc = MyFunction('abc')
abc() // should return 'a' on this first call
abc() // should return 'b' on this second call
abc() // should return 'c' on this third call
abc() // should return 'a' again on this fourth call

【问题讨论】:

  • 您忘记了描述问题并提出问题的部分......
  • 这是什么意思?我的问题无法理解?
  • 这意味着你没有问一个问题。您模糊地描述了似乎是家庭作业的内容,标记了一些技术,仅此而已。您编写了哪些代码,哪些代码没有按预期工作?
  • 实际的问题是你没有表现出解决这个问题的努力,所以无论答案多么简单,这都会显示为“请为我编写代码”。
  • 没问题Khayam。请检查How to Ask 并可能采取tour。您可以根据需要多次编辑您的问题以添加其他信息。您可以进行的最有价值的编辑可能是添加您尝试过的代码并指出问题所在。

标签: c# asp.net .net function methods


【解决方案1】:

您确实应该澄清您遇到的问题;欢迎阅读How to Ask

基本循环

就您的问题而言(根据我的理解),您希望重复调用一个方法并让该方法返回与当前调用对应的字符串的索引。我会查看for loopstring.Substring(int),您也可以将字符串作为char 数组访问(我在下面进行)。

static void Main() {
    string myString = "SomeStringData";
    for (int i = 0; i < myString.Length; i++)
        Console.Write(GetCharacter(myString, i));
}
static char GetCharacter(string data, int index) => data[index];

可以修改上面的代码以进行顺序调用,直到您需要停止循环,这将满足您在到达字符串末尾时返回第一个索引的条件:

string myString = "abc";
for (int i = 0; i < myString.Length; i++) {
    Console.Write(GetCharacter(myString, i);

    // This will reset the loop to make sequential calls.
    if (i == myString.Length)
        i = 0;
}

如果您希望摆脱上面的循环,您需要添加一些conditional logic 来确定循环是否应该是broken,或者不要循环,只需单独调用提供的GetCharacter(string, int) 方法。此外,如果您确实需要,您应该只修改迭代变量i;在这种情况下,您可以切换到更合适的while loop

string myString = "abc";
string response = string.Empty;
int index = 0;
while (response.TrimEnd().ToUpper() != "END") {
    Console.WriteLine(GetCharacter(myString, index++));
    Console.WriteLine("If you wish to end the test please enter 'END'.");
    response = Console.ReadLine();

    if (index > myString.Length)
        index = 0;
}

获取字符(表达式主体与全身)

C# 6 引入了将方法编写为表达式的能力;写成表达式的方法称为Expression-Bodied-Member。例如,以下两种方法的功能完全相同:

static char GetCharacter(string data, int index) => data[index];
static char GetCharacter(string data, int index) {
    return data[index];
}

表达式主体定义让您以非常简洁易读的形式提供成员的实现。只要任何受支持成员(例如方法或属性)的逻辑由单个表达式组成,您就可以使用表达式主体定义。

【讨论】:

  • 如果这解决了您的问题,请确保将您的问题标记为已回答。
  • static char GetCharacter(string data, int index) => data[index];只是函数声明在这个函数中实际做什么
  • C# 7 语法允许您将单行方法(函数)编写为表达式。以上返回如:return data[index];。我将更新帖子以澄清这一点。
猜你喜欢
  • 1970-01-01
  • 2017-07-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-20
  • 1970-01-01
相关资源
最近更新 更多