30/09/2018, 16:05
mọi người cho hỏi í nghĩa của kí tự @ trong c# và đoạn code dưới đây
mấy cái chỗ
sBuffer = Regex.Replace(sBuffer, @"(?<number>d+(.d+)?)", " ${number} ");
sBuffer = Regex.Replace(sBuffer, @"(?<ops>[+-*/^()])", " ${ops} ");
mình k hiểu sao lại viết đc như vậy
public void Parse(string Expression)
{
output = new Queue();
ops = new Stack();
sOriginalExpression = Expression;
string sBuffer = Expression.ToLower();
// captures numbers. Anything like 11 or 22.34 is captured
sBuffer = Regex.Replace(sBuffer, @"(?<number>d+(.d+)?)", " ${number} ");
// captures these symbols: + - * / ^ ( )
sBuffer = Regex.Replace(sBuffer, @"(?<ops>[+-*/^()])", " ${ops} ");
// captures alphabets. Currently captures the two math constants PI and E,
// and the 3 basic trigonometry functions, sine, cosine and tangent
sBuffer = Regex.Replace(sBuffer, "(?<alpha>(pi|e|sin|cos|tan))", " ${alpha} ");
// trims up consecutive spaces and replace it with just one space
sBuffer = Regex.Replace(sBuffer, @"s+", " ").Trim();
Bài liên quan
cái này mình cũng ko biết , hóng các pro thôi … . mà bạn dùng cách này để trình bày code lên đây cho dễ nhìn nè , chứ để thế khó nhìn lắm …
Bạn chạy 2 câu lệnh này sẽ thấy rõ .
Trong c#, khi xuất ra ta có các ký tự như ‘\n’ là xuống dòng… nhưng khi cho
@
đứng trước chuỗi thì\n
lại mang giá trị là 1 chuỗi\n
@
: đánh dấu 1 chuỗi sau nó là y nguyên, viết sao xuất ra vậy. (Nhìn ví dụ trên dễ hiểu hơn, khó nói quá).còn ý ngĩa các Regulare Expresion ở trên có giải thích bằng tiếng anh rồi đó bạn
@ trước một string để biết là giữ nguyên mẫu string đó giống như đã khai báo. Ví dụ 2 cách khai báo chuỗi không có @ và có @ đều in ra cùng 1 kết quả: