2016-12-17 63 views
-5
using System; 
using System.Numerics; 
using System.Text; 
class MyClass { 
    static void Main(string[] args) { 
     string str; 
      char[] str1=str.ToCharArray(); 
     foreach (char c in inputArray) 
    { 
     if (char.IsLower(c)) 
     str += char.ToUpper(c); 
     else 
      str += char.ToLower(c); 
    } 

     System.Console.WriteLine("str"); 

      } 
} 

错误:TMP/CSHARP_30f1_944d_bf85_a405_1481953523/editor_source_509c_cad9_9662_9111_1481953523.cs(8,23):错误CS0103:名称`inputArray”不在当前上下文中存在编译失败:1个错误,0警告转换上浇铸到铸下部和下铸到上部铸于C#

+2

你不需要做任何事情,c#有一个字符串大写的函数https://msdn.microsoft.com/en-us/library/ewdd6aed(v=vs.110).aspx。你的例外是因为'inputArray'没有被声明,如果你阅读它就很明显。 –

+0

在声明中使用str1并在循环复制代码中使用输入数据异味 – Lucifer

回答

1

试试这个代码,性能应该使用StringBuilder类:使用

using System.Text; 
public class MyClass { 
    public static void Main(string[] args) { 
     string input="AbCdEf"; 
     StringBuilder s1 = new StringBuilder(); 

     foreach(char c in input){ 
      if(char.IsLower(c)){ 
       s1.Append(char.ToUpper(c)); 
      }else{ 
       s1.Append(char.ToLower(c)); 
      } 


     } 

    System.Console.WriteLine(s1.ToString()); 

    } 
} 
+0

从性能角度来看,在这种情况下使用StringBuilder并不是最好的。 – apocalypse

+0

@apocalypse它比字符串连接好,但不是最好的,它将声明具有相同长度的数组。 –

+0

谢谢先生。 static void Main(string [] args) string str =“abcdE”; string result =“”; (char.IsLower(c)) result + = char.ToUpper(c);(char.IsLower(c)) 结果+ = char.ToUpper(c); if(char.IsLower(c)) (char.IsUpper(c)) result + = char.ToLower(c);如果(char.IsUpper(c)) else result + = char.ToLower(c); } Console.WriteLine(“{0}”,result); Console.ReadLine(); } } } –

0

一个行版本System.Linq

string input = "AAaaBBccDe"; 

var result = new String(input.Select(x => char.IsLower(x) ? char.ToUpper(x) : char.ToLower(x)).ToArray());