Guide to Using the Sensitive‑Word Java Library for Sensitive Word Detection and Replacement
This article provides a step‑by‑step tutorial on integrating the Sensitive‑Word Java library via Maven, demonstrates core find/replace APIs, showcases advanced detection features such as email, URL, IPv4 and custom replacement strategies, and includes complete code examples and output results.
The document introduces the Sensitive‑Word library, a Java tool for detecting and handling sensitive words in text. It begins with the Maven dependency snippet required to add the latest version of the library to a project.
<dependency>
<groupId>com.github.houbb</groupId>
<artifactId>sensitive-word</artifactId>
<version>0.18.0</version>
</dependency>Next, it presents core usage examples, including basic find/replace operations, custom result handling, and detection of case‑insensitive, special‑character, numeric, and traditional‑simplified variations of sensitive words.
package com.example.demo;
import com.github.houbb.sensitive.word.api.IWordContext;
import com.github.houbb.sensitive.word.api.IWordReplace;
import com.github.houbb.sensitive.word.api.IWordResult;
import com.github.houbb.sensitive.word.bs.SensitiveWordBs;
import com.github.houbb.sensitive.word.core.SensitiveWordHelper;
import com.github.houbb.sensitive.word.support.result.WordResultHandlers;
import com.github.houbb.sensitive.word.utils.InnerWordCharUtils;
import java.util.List;
public class SensitiveWordTestDemo {
public static void main(String[] args) {
testMoreFeatures();
}
// ... (other test methods omitted for brevity) ...
public static void testMoreFeatures() {
// 1. Email detection
String text = "楼主好人,邮箱 [email protected]";
List<String> wordList = SensitiveWordBs.newInstance()
.enableEmailCheck(true).init().findAll(text);
System.out.println("是否存在邮箱:" + wordList.toString());
// 2. Continuous number detection
text = "你懂得:12345678";
List<String> wordList1 = SensitiveWordBs.newInstance()
.enableNumCheck(true).init().findAll(text);
System.out.println("是否存在连续数字字符串:" + wordList1);
// 3. URL detection
text = "点击链接 https://www.baidu.com 查看答案";
SensitiveWordBs sensitiveWordBs = SensitiveWordBs.newInstance()
.enableUrlCheck(true).init();
List<String> wordList3 = sensitiveWordBs.findAll(text);
System.out.println("是否存在网址信息:" + wordList3.toString());
System.out.println("是否存在网址信息2并替换:" + sensitiveWordBs.replace(text));
// 4. IPv4 detection
text = "个人网站,如果网址打不开可以访问 127.0.0.1。";
SensitiveWordBs sensitiveWordBs2 = SensitiveWordBs.newInstance()
.enableIpv4Check(true).init();
List<String> wordList4 = sensitiveWordBs2.findAll(text);
System.out.println("是否存在 IPv4:" + wordList4.toString());
}
}Additional sections cover custom replacement strategies by implementing IWordReplace, allowing developers to replace specific sensitive words with alternative terms or mask them with asterisks.
class MySensitiveWordReplace implements IWordReplace {
@Override
public void replace(StringBuilder stringBuilder, char[] chars, IWordResult wordResult, IWordContext iWordContext) {
String sensitiveWord = InnerWordCharUtils.getString(chars, wordResult);
if ("五星红旗".equals(sensitiveWord)) {
stringBuilder.append("国家旗帜");
} else if ("毛主席".equals(sensitiveWord)) {
stringBuilder.append("教员");
} else {
int wordLength = wordResult.endIndex() - wordResult.startIndex();
for (int i = 0; i < wordLength; i++) {
stringBuilder.append('*');
}
}
}
}The article also displays sample console output illustrating detection results, replacements with default asterisks, custom symbols, and the effects of the various detection options.
Finally, the open‑source repository URL (https://github.com/houbb/sensitive-word) is provided, along with a brief promotional note about a backend‑focused technical community.
Signed-in readers can open the original source through BestHub's protected redirect.
This article has been distilled and summarized from source material, then republished for learning and reference. If you believe it infringes your rights, please contactand we will review it promptly.
Selected Java Interview Questions
A professional Java tech channel sharing common knowledge to help developers fill gaps. Follow us!
How this landed with the community
Was this worth your time?
0 Comments
Thoughtful readers leave field notes, pushback, and hard-won operational detail here.
