So sánh chuỗi Python bỏ qua trường hợp và khoảng trắng

Chọn một trang web để nhận nội dung đã dịch nếu có và xem các sự kiện và ưu đãi tại địa phương. Dựa trên vị trí của bạn, chúng tôi khuyên bạn nên chọn.

Bạn cũng có thể chọn một trang web từ danh sách sau

Làm thế nào để có được hiệu suất trang web tốt nhất

Chọn trang Trung Quốc (bằng tiếng Trung hoặc tiếng Anh) để có hiệu suất trang tốt nhất. Các trang web quốc gia khác của MathWorks không được tối ưu hóa cho các lượt truy cập từ vị trí của bạn

Xin chào

có cách nào để loại bỏ tất cả các không gian?

Nó sẽ như sau

System.Text.RegularExpressions.Regex.Replace(a,"\s+","").ToLower=System.Text.RegularExpressions.Regex.Replace(b,"\s+","").ToLower

Nếu bạn muốn xóa tất cả khoảng trắng, cách sau sẽ hoạt động

newA = System.Text.RegularExpressions.Regex.Replace(a,"\s+","")

(Chúng tôi có thể kiểm tra nó bằng LogMessage và/hoặc MessageBox, v.v.)

Trân trọng,

Giả sử chúng ta có hai chuỗi - một chuỗi chứa khoảng trắng trong đó và chuỗi kia chỉ chứa các ký tự không phải khoảng trắng

String normalString = "ABCDEF";
String stringWithSpaces = " AB  CD EF ";

Chúng ta có thể chỉ cần so sánh chúng trong khi bỏ qua các khoảng trắng bằng cách sử dụng phương thức replaceAll() tích hợp sẵn của lớp String

assertEquals(normalString.replaceAll("\\s+",""), stringWithSpaces.replaceAll("\\s+",""));

Sử dụng phương thức replaceAll() ở trên sẽ xóa tất cả các khoảng trắng trong chuỗi của chúng ta, bao gồm các ký tự không nhìn thấy được như tab, \n, v.v.

Ngoài \s+, chúng ta có thể sử dụng \s

3. Sử dụng Apache Commons Lang

Tiếp theo, chúng ta có thể sử dụng lớp StringUtils từ thư viện Apache Commons Lang để đạt được mục tiêu tương tự

Lớp này có phương thức deleteWhitespace() dùng để xóa tất cả các khoảng trắng trong String

assertEquals(StringUtils.deleteWhitespace(normalString), StringUtils.deleteWhitespace(stringWithSpaces));

4. Sử dụng Class StringUtils của Spring Framework

Cuối cùng, nếu dự án của chúng ta đã sử dụng Spring Framework, chúng ta có thể sử dụng lớp StringUtils từ tổ chức. khung mùa xuân. gói sử dụng

Phương pháp sử dụng thời gian này là trimAllWhitespace()

assertEquals(StringUtils.trimAllWhitespace(normalString), StringUtils.trimAllWhitespace(stringWithSpaces));

Chúng ta nên nhớ rằng nếu chúng ta muốn so sánh các chuỗi trong đó dấu cách có ý nghĩa, chẳng hạn như tên của mọi người, chúng ta không nên sử dụng các phương thức trong bài viết này. Ví dụ 2 chuỗi sau sẽ được coi là bằng nhau. “JACKIE CHAN” và “JACKIE CHAN” và đây có thể không phải là điều chúng ta thực sự muốn

Tôi muốn so sánh hai chuỗi sao cho việc so sánh sẽ bỏ qua sự khác biệt trong các ký tự đặc biệt. Đó là,

Hai, đây là một bài kiểm tra

Nên phù hợp với

Hải. đây là bài kiểm tra" hoặc "Hải đây là bài kiểm tra

Có cách nào để thực hiện việc này mà không sửa đổi chuỗi gốc không?

Giải pháp tốt nhất

Điều này loại bỏ dấu chấm câu và khoảng trắng trước khi thực hiện so sánh

In [32]: import string

In [33]: def compare(s1, s2):
    ...:     remove = string.punctuation + string.whitespace
    ...:     return s1.translate(None, remove) == s2.translate(None, remove)

In [34]: compare('Hai, this is a test', 'Hai ! this is a test')
Out[34]: True

Giải pháp liên quan

C# – Phân biệt chữ hoa chữ thường 'Chứa(chuỗi)'

Bạn có thể sử dụng Phương pháp String.IndexOf và chuyển StringComparison.OrdinalIgnoreCase làm loại tìm kiếm để sử dụng

string title = "STRING";
bool contains = title.IndexOf("string", StringComparison.OrdinalIgnoreCase) >= 0;

Tốt hơn nữa là định nghĩa một phương thức mở rộng mới cho chuỗi

________số 8_______

Lưu ý, sự lan truyền null đó ?. có sẵn kể từ C# 6. 0 (VS 2015), đối với các phiên bản cũ hơn, hãy sử dụng

if (source == null) return false;
return source.IndexOf(toCheck, comp) >= 0;

CÁCH SỬ DỤNG

string title = "STRING";
bool contains = title.Contains("string", StringComparison.OrdinalIgnoreCase);

Bash – Trích xuất tên tệp và phần mở rộng trong Bash

Đầu tiên, lấy tên tệp không có đường dẫn

filename=$(basename -- "$fullfile")
extension="${filename##*.}"
filename="${filename%.*}"

Ngoài ra, bạn có thể tập trung vào '/' cuối cùng của đường dẫn thay vì '. ' sẽ hoạt động ngay cả khi bạn có phần mở rộng tệp không thể đoán trước

Hướng dẫn này sẽ thảo luận về một số phương pháp để thực hiện so sánh phân biệt chữ hoa chữ thường của hai hoặc nhiều biến chuỗi trong Python

So sánh chuỗi không phân biệt chữ hoa chữ thường với phương pháp lower()

Chuỗi Python có tích hợp chuyển đổi tất cả các ký tự trong chuỗi thành chữ thường. Nó trả về một chuỗi với tất cả các ký tự được chuyển đổi thành chữ thường. Chúng ta có thể chuyển đổi hai chuỗi thành chữ thường bằng phương thức lower() và sau đó so sánh chúng không phân biệt chữ hoa chữ thường

normal_str1 = "Hello World!"
lower_str1 = normal_str1.lower()
print(lower_str1)

đầu ra

Bây giờ làm tương tự với biến chuỗi thứ hai

normal_str2 = "HELLO WORLD!"
lower_str2 = normal_str2.lower()
print(lower_str2)
0

normal_str2 = "HELLO WORLD!"
lower_str2 = normal_str2.lower()
print(lower_str2)

đầu ra

Như chúng ta có thể thấy, cả hai chuỗi đã được chuyển đổi thành tất cả các ký tự chữ thường. Bước tiếp theo là so sánh cả hai biến chuỗi và hiển thị đầu ra

normal_str1 = "Hello World!"
lower_str1 = normal_str1.lower()
normal_str2 = "HELLO WORLD!"
lower_str2 = normal_str2.lower()

if(lower_str1 == lower_str2):
    print("Both variables are equal")
else:
    print("Both variables are not equal")

đầu ra

So sánh chuỗi không phân biệt chữ hoa chữ thường với phương pháp normal_str2 = "HELLO WORLD!" lower_str2 = normal_str2.lower() print(lower_str2) 1

Phần trước đã giới thiệu cách thực hiện so sánh chuỗi không phân biệt chữ hoa chữ thường bằng phương pháp lower(). Logic đằng sau việc sử dụng là như nhau. Chúng tôi muốn thay đổi các biến chuỗi hiện có thành ký tự chữ hoa hoặc chữ thường trong cả hai phương thức. Phương thức

normal_str2 = "HELLO WORLD!"
lower_str2 = normal_str2.lower()
print(lower_str2)
1 là phương thức tích hợp sẵn của lớp chuỗi để chuyển đổi tất cả các ký tự của một biến chuỗi thành chữ hoa

normal_str1 = "Hello World!"
upper_str1 = normal_str1.upper()

normal_str2 = "hello world!"
upper_str2 = normal_str2.upper()

if(upper_str1 == upper_str2):
    print("Both variables are equal")
else:
    print("Both variables are not equal")

đầu ra

So sánh chuỗi không phân biệt chữ hoa chữ thường với phương pháp normal_str2 = "HELLO WORLD!" lower_str2 = normal_str2.lower() print(lower_str2) 5

Đây là một phương pháp tích cực hơn để chuyển đổi một biến chuỗi thành các ký tự chữ thường. Ví dụ,

Có một chữ cái tiếng Đức,

normal_str2 = "HELLO WORLD!"
lower_str2 = normal_str2.lower()
print(lower_str2)
7 đã là một chữ cái viết thường. Vì vậy, phương pháp lower() không làm gì với
normal_str2 = "HELLO WORLD!"
lower_str2 = normal_str2.lower()
print(lower_str2)
7. Nhưng
normal_str2 = "HELLO WORLD!"
lower_str2 = normal_str2.lower()
print(lower_str2)
5 chuyển đổi
normal_str2 = "HELLO WORLD!"
lower_str2 = normal_str2.lower()
print(lower_str2)
7 thành
normal_str1 = "Hello World!"
lower_str1 = normal_str1.lower()
normal_str2 = "HELLO WORLD!"
lower_str2 = normal_str2.lower()

if(lower_str1 == lower_str2):
    print("Both variables are equal")
else:
    print("Both variables are not equal")
2

normal_str = 'ß'
casefold_str = normal_str.casefold()
lower_str = normal_str.lower()
print("Case folded form of ß is : " + casefold_str)
print("Lower cased form of ß is : " + lower_str)

đầu ra

Case folded form of ß is : ss
Lower cased form of ß is : ß

Phương thức

normal_str2 = "HELLO WORLD!"
lower_str2 = normal_str2.lower()
print(lower_str2)
5 trả về một biến chuỗi trong đó tất cả các ký tự được chuyển đổi mạnh mẽ thành chữ thường. Biến chuỗi mới này sau đó có thể được so sánh để thực hiện so sánh phân biệt chữ hoa chữ thường

Làm cách nào để so sánh hai chuỗi và bỏ qua các ký tự đặc biệt trong Python?

Chuỗi so sánh Python bỏ qua chữ hoa chữ thường sử dụng hàm casefold . Nếu chúng ta áp dụng phương thức trên hoặc dưới để so sánh ký tự này với ss , nó sẽ trả về Sai , nhưng trường hợp sẽ chuyển đổi ß thành ss và trả về True.

Làm cách nào để kiểm tra xem hai chuỗi có giống nhau không, bỏ qua trường hợp của chúng?

Phương thức equalsIgnoreCase() so sánh hai chuỗi, bỏ qua sự khác biệt về chữ hoa và chữ thường. Phương thức này trả về true nếu các chuỗi bằng nhau và false nếu không. Mẹo. Sử dụng phương thức compareToIgnoreCase() để so sánh hai chuỗi theo từ điển, bỏ qua sự khác biệt về chữ hoa chữ thường.

Làm cách nào để so sánh hai chuỗi bằng biểu thức chính quy trong Python?

Use the == and != operators to compare two strings for equality. Use the is operator to check if two strings are the same instance. Use the < , > , <= , and >= operators to compare strings alphabetically.