Tôi muốn kiểm tra xem chuỗi có chứa nhiều hơn một ký tự trong chuỗi không? Nếu tôi có một chuỗi 12121.23.2 vì vậy tôi muốn kiểm tra xem nó có chứa nhiều hơn một chuỗi không. trong chuỗi.Cách xác định xem một chuỗi có chứa nhiều hơn một thể hiện của một ký tự cụ thể không?
Trả lời
Bạn có thể so sánh IndexOf
để LastIndexOf
để kiểm tra nếu có nhiều hơn một ký tự cụ thể trong một string
mà không đếm rõ ràng:
var s = "12121.23.2";
var ch = '.';
if (s.IndexOf(ch) != s.LastIndexOf(ch)) {
...
}
Bạn có thể dễ dàng đếm số lần xuất hiện của một nhân vật với LINQ:
string foo = "12121.23.2";
foo.Count(c => c == '.');
Boolean MoreThanOne(String str, Char c)
{
return str.Count(x => x==c) > 1;
}
chuỗi và char không thể có dấu bằng trong chúng – Arka
Có và tôi không sử dụng nó trong câu trả lời của tôi, hãy hiểu những gì tôi đang làm, nếu bạn không hiểu sau đó thử chạy và xem cho chính mình nếu nó hoạt động hay không. –
Nếu vấn đề hiệu suất, viết nó cho mình:
public static bool ContainsDuplicateCharacter(this string s, char c)
{
bool seenFirst = false;
for (int i = 0; i < s.Length; i++)
{
if (s[i] != c)
continue;
if (seenFirst)
return true;
seenFirst = true;
}
return false;
}
Bằng cách này, bạn chỉ thực hiện một lần thông qua nội dung của chuỗi và bạn bảo lãnh càng sớm càng tốt. Trong trường hợp xấu nhất, bạn chỉ truy cập tất cả các ký tự một lần. Trong câu trả lời của @ dasblinkenlight, bạn sẽ ghé thăm tất cả các nhân vật hai lần, và trong câu trả lời của @ mensi, bạn phải tính tất cả các trường hợp, mặc dù một khi bạn có hai bạn có thể ngừng tính toán. Hơn nữa, sử dụng phương pháp mở rộng Count
liên quan đến việc sử dụng một số Enumerable<char>
sẽ chạy chậm hơn so với truy cập trực tiếp các ký tự tại các chỉ mục cụ thể.
Sau đó, bạn có thể viết:
string s = "12121.23.2";
Debug.Assert(s.ContainsDuplicateCharacter('.'));
Debug.Assert(s.ContainsDuplicateCharacter('1'));
Debug.Assert(s.ContainsDuplicateCharacter('2'));
Debug.Assert(!s.ContainsDuplicateCharacter('3'));
Debug.Assert(!s.ContainsDuplicateCharacter('Z'));
Tôi cũng nghĩ nó đẹp hơn để có một hàm giải thích chính xác những gì bạn đang cố gắng để đạt được. Bạn có thể bọc bất kỳ câu trả lời khác trong một chức năng như vậy quá, tuy nhiên.
Trả lời của dasblinkenlight gần như chính xác. Bạn cũng cần kiểm tra xem chuỗi có chứa '.' Không trong đó. Bởi vì cả hai IndexOf() và LastIndexOf() sẽ trả về -1 trong trường hợp không có '.' char trong chuỗi.
Đây được sửa chữa dụ:
var s = "12121.23.2";
var ch = '.';
if ((s.IndexOf(ch) >= 0) && (s.IndexOf(ch) != s.LastIndexOf(ch))) {
...
}
EDIT: sai, không cần phải kiểm tra xem chuỗi thực sự chứa ''.
- 1. RegEx để biết nếu một chuỗi không chứa một ký tự cụ thể
- 2. Xác định xem một lớp có thực hiện một giao diện rất cụ thể hay không
- 3. Cách xác định xem chuỗi có chứa chuỗi con cụ thể trong các ký tự X đầu tiên
- 4. xác định xem mảng byte chứa byte theo một thứ tự cụ thể
- 5. Cách kiểm tra xem chuỗi có chứa chỉ các ký tự cụ thể
- 6. cách xóa tất cả các cá thể của một ký tự cụ thể khỏi một chuỗi
- 7. Trong Java, làm cách nào tôi có thể xác định xem mảng char có chứa một ký tự cụ thể không?
- 8. Cách xác định xem tất cả các ký tự trong một chuỗi có bằng nhau không
- 9. Cách kiểm tra xem một từ có bắt đầu bằng một ký tự cụ thể không?
- 10. Chuỗi: Cách thay thế nhiều ký tự có thể bằng một ký tự đơn?
- 11. Xác định xem một chuỗi các chuỗi có chứa một chuỗi con nhất định trong ruby
- 12. Cách hiệu quả nhất để tìm xem một danh sách lớn có chứa một chuỗi cụ thể (Python)
- 13. Kiểm tra xem một chuỗi trong một danh sách chứa một chuỗi cụ thể với LINQ
- 14. Kiểm tra xem một chuỗi có chứa một từ nhưng chỉ ở vị trí cụ thể không?
- 15. Cách kiểm tra xem NSArray có chứa đối tượng của một lớp cụ thể không?
- 16. Số lần một ký tự cụ thể xuất hiện trong một chuỗi
- 17. Chuỗi cắt php ở một ký tự cụ thể
- 18. Làm cách nào để kiểm tra xem phông chữ nào có chứa một ký tự cụ thể với perl?
- 19. Làm cách nào để thay thế chuỗi con của chuỗi trước một ký tự cụ thể?
- 20. Có thể thêm nhiều ký tự hơn sau một ràng buộc trong xaml không?
- 21. Có một nội trang Python để xác định xem một iterable có chứa một chuỗi nhất định không?
- 22. Xóa các tệp không chứa một chuỗi cụ thể
- 23. Làm thế nào để tìm xem liệu một chuỗi cụ thể có ký tự unicode hay không (đặc biệt là các ký tự Double Byte)
- 24. Có thể chỉ định nhiều hơn một gợi ý loại cho một tham số không?
- 25. Làm thế nào tôi có thể phát hiện các ký tự Unicode nhất định trong một chuỗi trong Ruby?
- 26. Trong Java, làm thế nào tôi có thể kiểm tra xem một bộ sưu tập có chứa một cá thể của một lớp cụ thể không?
- 27. Cách chỉ đăng ký một phần cụ thể của XML
- 28. Bạn có thể đăng ký một thể hiện hiện tại của một loại trong Windsor Container?
- 29. Để kiểm tra xem chuỗi có chứa từ cụ thể
- 30. Làm cách nào để xác định xem một khóa cụ thể có phải là duy nhất trong multimap không?
Điều này không thành công nếu ký tự không có mặt, vì cả hai chỉ số đều đánh giá -1. –
@DrewNoakes Tại sao? Nếu ký tự không hiện diện, cả hai hàm trả về '-1', vì vậy'! = 'Ước lượng thành' false'. Bạn cần hai hoặc nhiều ký tự trong đó: đối với số không hoặc một ký tự, chỉ mục đầu tiên và cuối cùng là giống nhau (chỉ mục thực tế hoặc '-1'). – dasblinkenlight
Ugh, vâng, bạn đúng :) Lỗi của tôi. –