2016-11-30 54 views
0

我想創建動態的語法功能和函數的語法創建函數的語法是象下面這樣:通過操縱串

MyFunction(arg1,arg2,ar3.....); 

我有串這樣的:

str = Previousvalue.Value1,Previousvalue.Value2 

現在我想創建在最終變量中的語法如下:

String final = MyFunction(Previousvalue.Value1,',',Previousvalue.Value2); 

str = Previousvalue.Value1,Previousvalue.Value2,Previousvalue.Value3; 
String final = MyFunction(Previousvalue.Value1,',',Previousvalue.Value2,',',Previousvalue.Value3); 

這就是我試圖用string.join(不使用循環),但沒有得到如何做到這一點,這似乎是不可能做到的,而不使用循環:

final = string.Join("MyFunction(", str.Split(',')); 

案例1:

Input : string str =Previousvalue.Value1,Previousvalue.Value2 

輸出:

string final=MyFunction(Previousvalue.Value1,',',Previousvalue.Value2,',',Previousvalue.Value3); 

案例2:

Input : str = Previousvalue.Value1,Previousvalue.Value2,Previousvalue.Value3; 

輸出

String final = MyFunction(Previousvalue.Value1,',',Previousvalue.Value2,',',Previousvalue.Value3); 

情況3:

string input = " Previousvalue.Value1"; 

輸出:

String final = Previousvalue.Value1; //No function 
+2

對不起,不明確。這個字符串到底是什麼,這個示例字符串的結果是什麼? –

+0

@TimSchmelter:我已更新問題以顯示輸入和輸出 –

+0

那麼,您仍然提供了一個輸出'「String final = MyFunction(...」',是字符串的String final部分或者它是一個變量聲明?如果是後者,爲什麼你沒有用引號將'MyFunction'部分包裝起來? –

回答

1

從我個人理解,你想生成一個這樣的:

"MyFunction(Previousvalue.Value1,',',Previousvalue.Value2);" 
^..........^...................^....^...................^. 
prefix  arg1    sep arg2    suffix 

,或者換句話說

prefix = "MyFunction("; 
separator = ",',',"; 
suffix = ");" 

這可以通過移動prefixsuffixstring.Join的和使用上述separator值來實現:

string final = "MyFunction(" + string.Join(",',',", str.Split(',')) + ");"; 

代替Split/Join您也可以簡單地使用string.Replace

string final = "MyFunction(" + str.Replace(",", ",',',") + ");"; 
1

從我對這個問題的理解中你想調用MyFunction的方法用n字符串參數,還用string[]。你可以這樣說:

public static void Main(string[] args) 
    { 
     string str = "Test1,Test2,Test3"; 

     string test1 = MyFunction("Test1", "Test2", "Test3"); 
     string test2 = MyFunction(str.Split(',')); 
    } 

    public static string MyFunction(params string[] parameters) 
    { 
     StringBuilder sb = new StringBuilder(); 
     foreach(var item in parameters) 
     { 
      sb.AppendLine(item); 
     } 

     return sb.ToString(); 
    } 
+0

請參閱我的更新後的問題,其中顯示輸入和輸出的兩種情況 –

0

嘗試:

public string MyJoin(params string[] vars) 
{ 
    return "MyFunction(" + string.Join(",", vars) + ");"; 
} 
+0

對不起,但使用您的答案我得到逗號之間的2個變量在我的輸出中 –