Insert variable values in the middle of a string

后端 未结 6 1974
生来不讨喜
生来不讨喜 2020-12-05 03:56

In C#: If I want to create a message like this: \"Hi We have these flights for you: Flight A,B,C,D. Which one do you want\"

where just the section i

相关标签:
6条回答
  • 2020-12-05 04:37

    Use String.Format

    Pre C# 6.0

    string data = "FlightA, B,C,D";
    var str = String.Format("Hi We have these flights for you: {0}. Which one do you want?", data);
    

    C# 6.0 -- String Interpolation

    string data = "FlightA, B,C,D";
    var str = $"Hi We have these flights for you: {data}. Which one do you want?";
    

    http://www.informit.com/articles/article.aspx?p=2422807

    0 讨论(0)
  • 2020-12-05 04:38

    There's now (C# 6) a more succinct way to do it: string interpolation.

    From another question's answer:

    In C# 6 you can use string interpolation:

    string name = "John";
    string result = $"Hello {name}";
    

    The syntax highlighting for this in Visual Studio makes it highly readable and all of the tokens are checked.

    0 讨论(0)
  • 2020-12-05 04:41

    You can use string.Format:

    string template = "Hi We have these flights for you: {0}. Which one do you want";
    string data = "A, B, C, D";
    string message = string.Format(template, data);
    

    You should load template from your resource file and data is your runtime values.

    Be careful if you're translating to multiple languages, though: in some cases, you'll need different tokens (the {0}) in different languages.

    0 讨论(0)
  • 2020-12-05 04:43

    1 You can use string.Replace method

    var sample = "testtesttesttest#replace#testtesttest";
    var result = sample.Replace("#replace#", yourValue);
    

    2 You can also use string.Format

    var result = string.Format("your right part {0} Your left Part", yourValue);
    

    3 You can use Regex class

    0 讨论(0)
  • 2020-12-05 04:57
    String.Format("Hi We have these flights for you: {0}. Which one do you want",
                                  flights);
    

    EDIT: you can even save the "template" string separately (for instance you could store it in a configuration file and retrieve it from there), like this:

    string flights = "Flight A, B,C,D";
    
    string template = @"Hi We have these flights for you: {0}. Which one do you want";
    Console.WriteLine(String.Format(template, flights));
    

    EDIT2: whoops, sorry I see that @DanPuzey had already suggested something very similar to my EDIT (but somewhat better)

    0 讨论(0)
  • 2020-12-05 05:00

    I would use a StringBuilder class for doing string manipulation as it will more efficient (being mutable)

    string flights = "Flight A, B,C,D";
    StringBuilder message = new StringBuilder();
    message.Append("Hi We have these flights for you: ");
    message.Append(flights);
    message.Append(" . Which one do you want?");
    
    0 讨论(0)
提交回复
热议问题