为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C#
斯蒂芬大帝 2021-11-07 18:41:41
我有一个问题,我需要遍历一个字符串并单独打印每个字符:var abc = MyFunction('abc')abc() // should return 'a' on this first callabc() // should return 'b' on this second callabc() // should return 'c' on this third callabc() // should return 'a' again on this fourth call
查看完整描述

1 回答

?
qq_笑_17

TA贡献1818条经验 获得超7个赞

你真的应该澄清你遇到的问题;请随时阅读如何提问。


基本循环


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


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;

}

如果您想逃避上面的循环,您需要添加一些条件逻辑来确定循环是否应该被破坏,或者只对GetCharacter(string, int)提供的方法进行单独调用而不是循环。此外,i如果确实需要,您应该只修改迭代变量;在这种情况下,您可以切换到更合适的while 循环:


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;

}

获取角色(表情身体 vs 全身)


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


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

static char GetCharacter(string data, int index) {

    return data[index];

}

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


查看完整回答
反对 回复 2021-11-07
  • 1 回答
  • 0 关注
  • 409 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信