如何获取字符串中的特定字符?

时间:2018-07-30 17:17:31

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

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

 array.sort(alphabetically);

1 个答案:

答案 0 :(得分: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,或者要循环而不是循环,只需对{{ 1}}方法。另外,仅在确实需要时才应修改迭代变量GetCharacter(string, int);在这种情况下,您可以切换到更合适的while loop

i

获取角色(表情主体与全身)

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

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;
}
  

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