簡體   English   中英

想要替換字符串C#中的單個字母

[英]Want to replace one single letter in a string c#

我想驗證C#中的名稱字段。 我的目標是將姓名和姓氏的首字母大寫,但將介詞保持小寫(在我的語言中,介詞中有“ de”,“ da”,“ dos”之類的介詞)。 我做了些什么,但是問題是我正在使用Replace(),並且碰巧的是,如果名稱以“ l”開頭,則每個“ l”都會很大,例如:

“ Lake like de lol”將是“ Lake Like de LoL”

私人弦樂

        public string Nome
        {
            get { return nome; }
            set 
            {
                value = value.ToLower();
                value = value.Replace(value[0].ToString(), value[0].ToString().ToUpper());
                for (int i = 0; i < value.Length; i++)
                {
                    if (value[i].ToString() == " " && String.Concat(value[i + 1], value[i + 2], value[i + 3]) != "de " && String.Concat(value[i + 1], value[i + 2], value[i + 3]) != "da " && String.Concat(value[i + 1], value[i + 2], value[i + 3]) != "dos " && String.Concat(value[i + 1], value[i + 2], value[i + 3]) != "das " && String.Concat(value[i + 1], value[i + 2], value[i + 3]) != "  ")
                    {
                        value = value.Replace(value[i + 1].ToString(), value[i + 1].ToString().ToUpper());
                    }
                }

                nome = value;
            }
        }

有人知道解決方案嗎? 謝謝,抱歉英語不好!

您可以使用slip方法將字符串拆分為一個字符串數組,然后對該數組中的每個字符串檢查它是否是一個介詞,以及是否不只用大寫字母替換第一個字母(如果在兩個字符之間,則可以從char中減去32 97和122-小寫的Ascii字符)

這是我為您寫的一個示例,該示例使用單詞列表不大寫。

class Program
{
    static List<string> listOfPrepositions = new List<string>()
        {
            "de",
            "da",
            "dos"
        };

    static void Main(string[] args)
    {
        var somestring = "asdf aaa Asdf";
        Console.WriteLine(UppercaseName(somestring));
        Console.ReadLine();
    }

    static string UppercaseName(string fullName)
    {
        var split = fullName.Split(' ');
        var returnedName = "";

        foreach (var name in split)
        {
            if (name.Length == 0)
                continue;

            if (listOfPrepositions.Where(p => p.Equals(name)).Count() > 0)
            {
                returnedName += name + " ";
                continue; // skip if it's a preposition
            }

            // Set the first character in the string to be uppercase
            returnedName += char.ToUpper(name[0]) + name.Substring(1) + " ";

        }
        returnedName.TrimEnd(' ');
        return returnedName;
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM