在 Java 中封鎖電子郵件地址和電話號碼
一、簡介
隱私和資料安全是軟體開發的重要元素。屏蔽敏感詳細資訊(例如使用者的電子郵件地址和電話號碼)通常是用於保護使用者資訊並防止其洩露的程式。
在本教程中,我們將研究如何在 Java 中封鎖電子郵件地址和電話號碼。
2. 屏蔽電子郵件地址
2.1.使用字串操作
字串操作是透過編輯字元並用星號替換一些字元來隱藏電子郵件的方法之一。下面是一個簡單的 Java 程式碼片段,示範了這個方法:
String email = "[email protected]";
String expectedMaskedEmail = "te**************@example.com";
@Test
public void givenEmailAddress_whenUsingStringManipulation_thenMaskEmail() {
int atIndex = email.indexOf('@');
String repeatedString = IntStream.range(0, atIndex - 2).mapToObj(i -> "*").collect(Collectors.joining());
String maskedPart = email.substring(0, atIndex - repeatedString.length()) + repeatedString;
String maskedEmail = maskedPart + email.substring(atIndex);
assertEquals(expectedMaskedEmail, maskedEmail);
}
在給定的範例中,我們首先找到電子郵件地址中「 @”字元的索引。然後,我們使用Java的Stream API和字串運算產生一串長度等於atIndex -2的星號字串。請注意,我們從atIndex中減去 2 位數字以獲得email的前兩位數字。
電子郵件的maskedPart是透過將「 @”符號之前的字元與所提供的 Java 程式碼上下文中產生的星號字串組合起來產生的。
然後透過連接maskedPart和產生的星號來獲得電子郵件地址。最後,我們使用assertEquals()方法來驗證maskedEmail是否與expectedMaskedEmail相同。
2.2.使用正規表示式
另一種方法是實作正規表示式來隱藏電子郵件地址。這是一個例子:
@Test
public void givenEmailAddress_whenUsingRegex_thenMaskEmail() {
int atIndex = email.indexOf('@');
String regex = "(.{2})(.*)(@.*)";
String repeatedAsterisks = "*".repeat(atIndex - 2);
String maskedEmail = email.replaceAll(regex, "$1" + repeatedAsterisks + "$3");
assertEquals(expectedMaskedEmail, maskedEmail);
}
在上面的測試方法中,我們首先使用indexOf()方法來確定email中「 @ 」符號的索引。然後,我們使用正規表示式正規regex 「 (.{2})(.*)(@.*) 」來捕捉三組:前兩個字元、它們和「 @ 」符號之間的字元以及後面的字符這 ” @ ”。
隨後,變數repeatedAsterisks被分配一串星號,其長度對應於atIndex -2。最後, replaceAll()方法應用regex模式,以產生的星號取代email的中間部分。
3. 隱藏電話號碼
3.1.使用字串操作
我們也可以透過執行一些字元操作來隱藏電話號碼。這是一個例子:
String phoneNumber = "+1234567890";
String expectedMaskedPhoneNumber = "+******7890";
@Test
public void givenPhoneNumber_whenUsingStringManipulation_thenMaskPhone() {
String maskedPhoneNumber = phoneNumber.replaceAll("\\d(?=\\d{4})", "*");
assertEquals(expectedMaskedPhoneNumber, maskedPhoneNumber);
}
在這裡,我們將正規表示式「 \\d(?=\\d{4}) 」傳遞給replaceAll()方法,旨在識別並替換所有後面跟有星號的四位數字。
3.2.使用正規表示式
與隱藏電子郵件地址的方法類似,可以實現正規表示式來正確隱藏電話號碼。以下是示範此方法的 Java 程式碼片段:
@Test
public void givenPhoneNumber_whenUsingRegex_thenMaskPhone() {
int lastDigitsIndex = phoneNumber.length() - 5;
String regex = "(\\+)(\\d+)(\\d{4})";
String repeatedAsterisks = "*".repeat(Math.max(0, lastDigitsIndex));
String maskedPhoneNumber = phoneNumber.replaceAll(regex, "$1" + repeatedAsterisks + "$3");
assertEquals(expectedMaskedPhoneNumber, maskedPhoneNumber);
}
在上面的程式碼片段中,我們定義了一個正規表示式正規regex “ (\\+)(\\d+)(\\d{4}) ”,它捕捉三組:加號、前導數字和最後四位數字。
隨後,我們根據計算出的lastDigitsIndex產生重複星號的字串repeatedAsterisks 。然後,我們使用replaceAll()方法應用regex模式,並用星號取代中間數字。
4。結論
總之,敏感資訊的屏蔽對於保護用戶隱私和遵守資料安全法規至關重要。因此,我們在本教程中看到如何利用字串操作和正規表示式等機制來封鎖電子郵件地址和電話號碼。
與往常一樣,本文的完整程式碼範例可以在 GitHub 上找到。