Lọc chuỗi trong asp.net C#
Mình có vấn đề này xin các bạn bên công nghệ thông tin giúp cho. Mình tạo 1 Webservice đơn giản bằng ASP.NET. Mình co 1 file .txt. Nội dung như sau:
<Anh A> <1000>
<Chi B> <2000>
<Anh C> <3000>
<Anh D> <4000>
Mình muốn lấy tên và lương tháng của từng người và lưu vào 1 lớp gọi là Company.
public class Company
{
public string Name { get; set; }
public string Salary { get; set; }
}
Đây là code của mình viết trên VS2015:
[WebMethod]
public List<Company> CompanyGetInformation()
{
List<Company> company = new List<Company>();
//List<string> information = new List<string>();
string name = " ";
string salary= " ";
int startSubName, startSubSalary;
int endSubName, endSubSalary;
string path = "D:/Bi/Company.txt";
StreamReader reader = File.OpenText(path);
while(!reader.EndOfStream)
{
//information.Add(reader.ReadLine());
for (int i = 0; i <reader.ReadLine().Length;i++)
{
startSubName = reader.ReadLine().IndexOf("<");
startSubSalary = reader.ReadLine().LastIndexOf("<");
endSubName = reader.ReadLine().IndexOf(">");
endSubSalary = reader.ReadLine().LastIndexOf(">");
name = reader.ReadLine().Substring(startSubName + 1, endSubName);
salary = reader.ReadLine().Substring(startSubSalary + 1, endSubSalary);
}
company.Add(new Company() { Name = name, Salary = salary });
}
return company;
}
Khi mình chạy lên thì nó báo lỗi thế này:
System.ArgumentOutOfRangeException: Index and length must refer to a location within the string.
Parameter name: length
at System.String.Substring(Int32 startIndex, Int32 length)
at web.topicaservice.CompanyGetInformation() in D:BiBai 3 Webwebweb opicaservice.asmx.cs:line 100
Các bạn cho mình hỏi giờ mình phải giải quyết như thế nào?
Đoạn substring kia bạn phải endSubSalary-1 mới đúng chứ
Ý tưởng của bạn là:
Thật tuyệt vời ! ý tưởng tốt khà khà.
Mà hơi tiếc! Bạn đã quên kiến thức cơ bản rằng: Read() đọc 1 ký tự hoặc được chỉ định và ReadLine() thì chơi luôn nguyên hàng nhé!
Tự biết ko ổn chổ nào chưa ? À phong cách viết code của bạn khá tốt đấy
Cảm ơn bạn nhé. Mình học bên điện tử nên kiến thức về lập trình bên IT không được tốt lắm. Mình sẽ kiểm tra lại xem sao.
Mình đã làm được rồi. Thanks. Nhưng mình vẫn dùng ReadLine.
Đúng rồi có nhiều cách để giải quyết mà. Mình thấy vòng lặp for nên hiểu ý tưởng của bạn là quét qua từng ký tự.
Mà sao bạn ko dùng file XML cho tiện ?
Mình học bên điện tử nên mình không rành bên công nghệ thông tin lắm. Mình muốn có tạo 1 cái server tử máy tính. Mình dùng chip, cảm biến đo dữ liệu rồi chuyển hết data lên server. Sau đó dùng điện thoại để giám sát hoặc theo dõi.
Mình lên mạng tìm thì thấy ASP.NET và C# nên học và làm theo.
theo kinh nghiệm của mình thì lỗi này thường gặp nếu bạn làm gì đó liên quan đến index, ví dụ bạn subString ở 1 vị trí index vượt quá độ dài chuổi, nên nếu gặp từ khóa này thì bạn có thể check lại index.
Góp ý thêm vậy thôi chứ cũng không biết gì nhiều