Câu trả lời:
string mystr = string.Format("This is {0}overflow", strVar);
Và bạn cũng có thể sử dụng các tham số được đặt tên thay vì chỉ mục.
Điều này đã được thêm vào từ C # 6.0 (Visual Studio 2015+).
Thí dụ:
var planetName = "Bob";
var myName = "Ford";
var formattedStr = $"Hello planet {planetName}, my name is {myName}!";
// formattedStr should be "Hello planet Bob, my name is Ford!"
Đây là đường cú pháp cho:
var formattedStr = String.Format("Hello planet {0}, my name is {1}!", planetName, myName);
Tài nguyên bổ sung:
$("This feature is {GetDescription(FEATURE_AMAZING))}");
Bạn có thể sử dụng string.Format
để thả các giá trị vào chuỗi:
private static readonly string formatString = "This is {0}overflow";
...
var strVar = "stack";
var myStr = string.Format(formatString, "stack");
Một cách khác là sử dụng toán tử nối C #:
var strVar = "stack";
var myStr = "This is " + strVar + "overflow";
Nếu bạn đang thực hiện nhiều phép nối, hãy sử dụng StringBuilder
lớp hiệu quả hơn:
var strVar = "stack";
var stringBuilder = new StringBuilder("This is ");
for (;;)
{
stringBuilder.Append(strVar); // spot the deliberate mistake ;-)
}
stringBuilder.Append("overflow");
var myStr = stringBuilder.ToString();
C # 6.0
string mystr = $"This is {strVar}overflow";
Không có nhà điều hành cho điều đó. Bạn cần sử dụng string.Format
.
string strVar = "stack";
string mystr = string.Format("This is {0}soverflow", strVar);
Thật không may string.Format
là một phương thức tĩnh, vì vậy bạn không thể viết đơn giản "This is {0}soverflow".Format(strVar)
. Một số người đã xác định một phương thức mở rộng, cho phép cú pháp này.
Sử dụng string.Format
:
string mystr = string.Format("This is {0}overflow", "stack");
Bạn nên sử dụng String.Format()
. Cú pháp có một chút khác biệt, các trình giữ chỗ bằng số được sử dụng để thay thế.
Thí dụ:
String.Format("item {0}, item {1}", "one", "two")
Hãy xem tại http://msdn.microsoft.com/en-us/library/system.string.format.aspx để biết thêm chi tiết.
Bạn có 2 lựa chọn. Bạn có thể sử dụng String.Format hoặc bạn có thể sử dụng toán tử nối.
String newString = String.Format("I inserted this string {0} into this one", oldstring);
HOẶC LÀ
String newString = "I inserted this string " + oldstring + " into this one";
String.Format()
sử dụng StringBuilder. StringBuilder thường hiệu quả hơn khi nối nhiều chuỗi nhưng toán tử nối là hoàn hảo cho một lần. String.Format()
hữu ích khi định dạng cần được áp dụng cho đầu ra, ví dụ như thêm phần đệm hoặc số không ở đầu vào các giá trị số. Vì vậy, sử dụng String.Format()
trong một vòng lặp sẽ có khả năng khởi tạo rất nhiều StringBuilders. Trong tình huống đó, tốt hơn là sử dụng một StringBuilder được khai báo bên ngoài vòng lặp và AppendFormat()
bên trong vòng lặp.
Có một cách nữa để triển khai trình giữ chỗ bằng string.Replace, giúp ích một cách kỳ lạ trong một số trường hợp nhất định:
mystr = mystr.Replace("%soverflow", strVar);
Bạn có thể sử dụng cách sau
Nội suy chuỗi
Ký tự đặc biệt $ xác định một chuỗi ký tự là một chuỗi nội suy. ví dụ
string name = "Mark";
string surname = "D'souza";
WriteLine($"Name :{name} Surname :{surname}" );//Name :Mark Surname :D'souza
Chuỗi nội suy là một chuỗi ký tự có thể chứa các biểu thức nội suy. Khi một chuỗi nội suy được phân giải thành một chuỗi kết quả, các mục có biểu thức nội suy được thay thế bằng các biểu diễn chuỗi của kết quả biểu thức.
String.Format
Sử dụng String.Format nếu bạn cần chèn giá trị của một đối tượng, biến hoặc biểu thức vào một chuỗi khác.
WriteLine(String.Format("Name: {0}, Surname : {1}", name, surname));
Sử dụng:
strVar = "stack"
mystr = String.Format("This is {0}", strVar);
Bạn có thể thực hiện điều này với Expansive: https://github.com/anderly/Expansive