Câu hỏi Làm cách nào tôi có thể đếm số trong một chuỗi văn bản / số hỗn hợp


Vì vậy, những gì tôi đang cố gắng làm, là lấy một số công việc, mà trông giống như này xxx123432, và đếm các chữ số trong mục, nhưng không phải là chữ cái. Tôi muốn sau đó gán số lượng cho một biến, và sử dụng biến đó để cung cấp một kiểm tra đối với các số công việc để xác định xem chúng có ở định dạng hợp lệ hay không.

Tôi đã tìm ra cách để thực hiện kiểm tra, nhưng tôi không có đầu mối làm thế nào để đi về đếm số trong số công việc.

Cám ơn rất nhiều về sự giúp đỡ của bạn.


13
2018-05-12 20:00


gốc


Bạn có cần tính toán không 1+2+3+4+3+2? Hoặc đếm một số số (6)? Hay cái gì? - abatishchev
Tôi cần đếm số lượng. - OneFreeFitz


Các câu trả lời:


Sử dụng LINQ:

var count = jobId.Count(x => Char.IsDigit(x));

hoặc là

var count = jobId.Count(Char.IsDigit);

29
2018-05-12 20:07



@ mathieu-Bên cạnh cú pháp, whats sự khác biệt thực sự giữa hai? - MAW74656
@ MAW74656: không có sự khác biệt về hành vi. những cái đầu tiên sử dụng một vị từ được khai báo (tức là một hàm lấy 1 arg của kiểu char và trả về bool) và sử dụng thứ hai trực tiếp hàm - mathieu


int x = "xxx123432".Count(c => Char.IsNumber(c)); // 6

hoặc là

int x = "xxx123432".Count(c => Char.IsDigit(c)); // 6

Sự khác biệt giữa hai phương pháp này nhìn thấy Char.IsDigit và Char.IsNumber.


4
2018-05-12 20:07





Một cái gì đó như thế này có thể?

string jobId = "xxx123432";
int digitsCount = 0;
foreach(char c in jobId)
{
  if(Char.IsDigit(c))
    digitsCount++;
}

Và bạn có thể sử dụng LINQ, như thế này:

string jobId = "xxx123432";
int digitsCount = jobId.Count(c => char.IsDigit(c));

2
2018-05-12 20:03





    string str = "t12X234";
    var reversed = str.Reverse().ToArray();
    int digits = 0;

    while (digits < str.Length &&
           Char.IsDigit(reversed[digits])) digits++;

    int num = Convert.ToInt32(str.Substring(str.Length - digits));

Điều này cho num 234 là đầu ra nếu đó là những gì bạn cần.

Các biến thể LINQ / lambda khác chỉ đếm các ký tự mà tôi nghĩ là không hoàn toàn chính xác nếu bạn có một chuỗi như "B2B_MESSAGE_12344", bởi vì nó sẽ đếm số 2 trong B2B.

Nhưng tôi không chắc liệu tôi có hiểu chính xác số con số có nghĩa là gì không. Là số đếm các số (các câu trả lời khác) hay số mà các số tạo thành (câu trả lời này).


0
2018-05-12 20:15



Tôi đoán tôi nên rõ ràng hơn về điều đó. Tôi đang tìm kiếm số lượng các số, nhưng dù sao cũng xin cảm ơn câu trả lời của bạn. - OneFreeFitz