2017-05-22 55 views
-1

我需要通過與雙引號的字符串作爲參數傳遞給下面的代理方法:字符串以雙qoutes

public void CallProxyMethod() 
{ 
    //SomeProxyClass derives from Systems.Collections.Generic.List<string> 
    var parameters = new SomeProxyClass() {"parameter1", "paramter2", "parameter3"}; 
    SomeProxyMethod(parameters); 
} 

這些參數值從配置文件讀取。

<add key=Parameters" value="parameter1, parameter2, parameter3"/> 

我試圖用逗號分割的配置值,並添加雙引號他們,但我最終在SomeProxyClass上述以下值:

「\」參數1 \「」,「\ 「paramter2 \」「,」\「parameter3 \」「。

我需要在類的值是:

「參數1」, 「paramter2」, 「參數3」。

我如何轉換「參數1,參數,參數3」「參數1」, 「paramter2」, 「參數3」在C#中?

+0

的'value'屬性不能持有超過一個字符串。 'value =「param1」,「param2」,「param3」'無效並且會導致錯誤。 –

+0

@TravisJ TI有'value =「parameter1,parameter2,parameter3」',not'value =「parameter1」,「parameter2」,「parameter3」' – Kalno2

+0

爲什麼要用引號?你從配置文件中獲取值作爲字符串;當你用逗號分割它時,你會得到一串字符串。將這些傳遞給你的代理類,或者使用'parameters.AddRange(splitString);'或其他。 –

回答

1

像這樣的東西應該工作...

var items = "item1, item2, item3"; 
var newItems = "\"" + string.join("\",\"", items.split({","})) + "\""; 
+0

Sam,輸出到:'「\」item1 \「」,「\」item2 \「」,「\」item3 \「」'。當它傳遞給'SomeProxyClass'時,該值需要是「item1」,「item2」,「tem3」'。 – Kalno2

+0

好的。以及弄清楚如何在c#字符串中轉義雙引號。 –

0

你可以用這個實現它:

var yourString = "parameter1, parameter2, parameter3"; 
var result = $"\"{yourString.Replace(",",@"","")}\""; 
+0

輸出到:'「\」parameter1 \「」,「\」paramter2 \「」,「\」parameter3 \「」'當傳遞給'SomeProxyClass'時。 – Kalno2

0

嘗試使用StringBuilder代替。

static class Quotes 
{ 
    public static StringBuilder DoubleQuotes(params string[] parameters) 
    { 
     char quote = '\u0022'; 
     string value = null; 

     for (int i = 0; i < parameters.Length; i++) 
     { 
     parameters[i] = 
      parameters[i] 
       .Insert(0, quote.ToString()) 
       .Insert(parameters[i].Length + 1, quote.ToString()); 

      value += parameters[i];   
     } 

    value = String.Join(", ", parameters); 
    StringBuilder builder = new StringBuilder(value); 

    return builder; 
} 

在這種情況下,你必須改變從List<string>List<StringBuilder>。我希望這有幫助。

public void CallProxyMethod() 
{ 
    var withHelperMethod = new SomeProxyClass() 
    { 
     Quotes.DoubleQuotes("parameter1", "parameter2"), 
     Quotes.DoubleQuotes("parameter3") 
    }; 

    var withoutHelperMethod = new SomeProxyClass() 
    { 
     new StringBuilder("\"parameter1\""), 
     new StringBuilder("\"parameter2\""), 
    }; 

    SomeProxyMethod(withHelperMethod); 
    SomeProxyMethod(withoutHelperMethod); 
} 

This is the result what I got