函数返回字符串

时间:2016-04-14 06:28:14

标签: c#

如何编写一个给定输入字符串的函数,仅使用If / Then / Else,简单字符串函数和循环语法(不使用Split()函数或其等效函数)传回字符串的首字母缩写词?

String s_input,s_acronym

s_input =“反对醉酒驾驶的母亲”

s_acronym = f_get_acronym(s_input)

print“acronym =”+ s_acronym

/ *首字母缩略词= MADD * /

我的代码在这里。只是想看看我能否找到更好的解决方案

static string f_get_acronym(string s_input)
{
    string s_acronym = "";
    for (int i = 0; i < s_input.Length; i++)
    {
        if (i == 0 && s_input[i].ToString() != " ")
        {
            s_acronym += s_input[i];
            continue;
        }

        if (s_input[i - 1].ToString() == " " && s_input[i].ToString() != " ")
        {
            s_acronym += s_input[i];
        }
    }

    return s_acronym.ToUpper();
}

4 个答案:

答案 0 :(得分:0)

正则表达式是进入C#的方式。我知道你只想要简单的功能,但是我想把它放在任何进一步的读者身上,这些读者应该被引导到正确的道路上。 ;)

var regex = new Regex(@"(?:\s*(?<first>\w))\w+");
var matches = regex.Matches("Mother against druck driving");
foreach (Match match in matches)
{
    Console.Write(match.Groups["first"].Value);
}

答案 1 :(得分:0)

private static string f_get_acronym(string s_input)
{
        if (string.IsNullOrWhiteSpace(s_input))
            return string.Empty;
        string accr = string.Empty;
        accr += s_input[0];
        while (s_input.Length > 0)
        {
            int index = s_input.IndexOf(' ');
            if (index > 0)
            {
                s_input = s_input.Substring(index + 1);
                if (s_input.Length == 0)
                    break;
                accr += s_input[0];
            }
            else
            {
                break;
            }
        }

        return accr.ToUpper();
}

答案 2 :(得分:0)

保持简单:

public static string Acronym(string input)
{
    string result = string.Empty;
    char last = ' ';

    foreach(var c in input)
    {
        if(char.IsWhiteSpace(last))
        {
            result += c;              
        }
        last = c;
    }

    return result.ToUpper();
}

最佳做法是,在循环中添加字符串时应使用StringBuilder。不知道你的首字母缩略词会有多长。

答案 3 :(得分:-2)

这样做的最佳方法是设置一个循环来遍历每个字母。如果它是字符串中的第一个字母,或者是空格后的第一个字母,请将该字母添加到临时字符串中,该字符串最后返回。

例如(基本c ++)

string toAcronym(string sentence)
{
    string acronym = "";
    bool wasSpace = true;
    for (int i = 0; i < sentence.length(); i++)
    {
        if (wasSpace == true)
        {
            if (sentence[i] != ' ')
            {
                wasSpace = false;
                acronym += toupper(sentence[i]);
            }
            else
            {
                wasSpace = true; 
            }
        }
        else if (sentence[i] == ' ')
        {
            wasSpace = true;
        }
    }
    return acronym;
}

这可以通过检查以确保添加到首字母缩略词的字母是字母而不是数字/符号来进一步改进。 OR ...

如果是字符串中的第一个字母,请将其添加到首字母缩写词中。然后,运行一个循环“查找下一个”空格。然后,添加下一个字符。连续循环“查找下一个”空格,直到它返回null / eof / end of string,然后返回。