问题描述:
将用户姓名格式成姓和名首字母大写,其它字母小写并去掉中间空格的形式
比如输入为“waNG li li”格式后为“WangLiLi”
可以兼容两字名和四字名
本题所要使用的方法简介:
public string ToLower()
把字符串转换为小写并返回。
public string ToUpper()
把字符串转换为大写并返回。
String.SubString(int index,int length)
index:开始位置,从0开始 length:你要取的子字符串的长度
public string[] Split( params char[] separator )
返回一个字符串数组,包含当前的 string 对象中的子字符串,子字符串是使用指定的 Unicode 字符数组中的元素进行分隔的。
public string[] Split( char[] separator, int count )
返回一个字符串数组,包含当前的 string 对象中的子字符串,子字符串是使用指定的 Unicode 字符数组中的元素进行分隔的。int 参数指定要返回的子字符串的最大数目。
这些都是官方文档的定义,虽然不是那么通俗,但是很精确,遇到了我再讲解 ;
解题思路:
由于姓名输入的格式是由空格隔开,并且大小写混乱,可以将其读入到一个字符串中,然后使用Split(‘ ’)方法,通过空格单字符切割(注意:空格为单字符,使用单引号即可)为字符串数组;
然后for循环,这时考虑到数组中的每个元素都要求首字母大写,其他字母小写,毫无疑问是要你使用string类型的ToUpper()方法和ToLower()方法,即首字母使用ToUpper()方法,其它字母使用ToLower(),这是首先想到Substring方法切割字符串,即将首字母和其它字母切割开,当然最后还要连起来;
有了解题思路,我们就开始写代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
class FormattingName
{
static void Main(string[] args)
{
//变量初始化,注意string类型变量初始化可以使用string.Empty,减小内存占用
//原因Empty是C#中提前定义的空串,这样直接引用,不用再申请新的内存空间
//注意:最好不要用null,null直接为空没有申请地址空间,不能调用string方法
string _name = string.Empty;
_name = Console.ReadLine();
string[] _word = _name.Split(' ');
for(int i=0; i<_word.Length; i++)
{
//使用Substring()方法将字符串分为首位和剩下N位两部分,
//分别用ToUpper()方法和ToLower()方法格式化大小写,然后连接;
//Substring(int index,int length)
//index: 开始位置,从0开始
//length:要截取的字符串长度
_word[i] = _word[i].Substring(0 ,1).ToUpper()
+ _word[i].Substring( 1, _word[i].Length-1).ToLower();
}
foreach(string word in _word)
{
Console.Write(word);
}
Console.ReadLine();
}
}
这里想说一些,Split()方法,有好几种用法,不光可以单字符切割,还可以使用字符串切割,当然自己重载Split()方法也行,
刚接触C#,还有很多要学习的地方,有错误的地方欢迎指正;