日期:2014-05-18  浏览次数:20881 次

输入空格是否会产生异常
using System; 
using System.Collections.Generic; 
using System.Text; 

namespace Camelname 

  class Program 
  { 
  static void Main(string[] args) 
  { 
  string name; //原是字符串 
  string camelName; //按Camel规则输出 

  Console.WriteLine("输入字符串,单词之间用空格分开"); 
  name = Console.ReadLine(); 

  camelName =ConvertToCamel(name); 
  Console.WriteLine("转换后:{0}",camelName); 
  Console.ReadLine(); 
  } 
  private static string ConvertToCamel(string name) 
  { 
  string camelName; 
  string[] word; 
  string tempWord; 

  //用空格分隔字符串 
  word = name.Split(' '); 

  //将第一个单词转为小写 
  camelName = word[0].ToLower(); 

  for (int i = 1; i < word.Length; i++) 
  { 
  //取出单词的第一个字母转为大写 
  tempWord = word[i].Substring(0, 1).ToUpper(); 
  camelName = camelName + tempWord; 
   
  //剩下的字母小写 
  tempWord = word[i].Substring(1).ToLower(); 
  camelName = camelName + tempWord; 
  } 
  return camelName; 
  } 
  } 



------解决方案--------------------
会,如果输入一个空格,那么:
word = name.Split(' '); 
这个将分析出两个成员的word数组,每个成员均是:"",即空串。

这本来不会导致异常,但你后面的程序:
for (int i = 1; i < word.Length; i++) 

//取出单词的第一个字母转为大写 
tempWord = word[i].Substring(0, 1).ToUpper(); 
camelName = camelName + tempWord; 

//剩下的字母小写 
tempWord = word[i].Substring(1).ToLower(); 
camelName = camelName + tempWord; 


这个地方访问SubString(0,1)这里会出错,因为你的字符串是空串,无法从0位置取出1个字符。会产生IndexOutOfRange异常。
一种简单修改的方法是:
在最前面加上:
name = name.Trim();