public class Placeholder extends Object
文件名:Placeholder.java
用途:定义占位符替换的方法,以及对占位符指定,以方便占位符替换方法的统一管理
编码时间:2023年5月15日 上午10:20:47
修改时间:2023年5月15日 上午10:20:47
Modifier and Type | Class and Description |
---|---|
static interface |
Placeholder.TextProcessor
文件名:Placeholder.java
|
Constructor and Description |
---|
Placeholder(Placeholder placeholder)
根据已有的占位符对象,构造新的占位符类对象
|
Placeholder(String startSign,
String endSign)
构造对象,初始化占位符的起始与结束标志
|
Modifier and Type | Method and Description |
---|---|
Placeholder |
addPlaceholder(Placeholder placeholder,
boolean isRepeatSkip)
该方法用于根据已有的占位符类对象,将其替换词语和替换公式复制到当前类对象中
|
Placeholder |
addReplaceFunction(Map<String,DataFunction> functionMap,
boolean isRepeatSkip)
该方法用于添加待替换的词语及相应的替换方法集合
|
Placeholder |
addReplaceFunction(String regex,
DataFunction function)
用于添加待替换的词语及相应的替换方法
|
Placeholder |
addReplaceWord(Map<String,String> wordMap,
boolean isRepeatSkip)
该方法用于添加一组待替换的词语及相应的替换内容
|
Placeholder |
addReplaceWord(String word,
String replaceWord)
该方法用于添加待替换的词语及相应的替换内容
|
Map<String,DataFunction> |
clearReplaceFunction()
该方法用于清空添加待替换的词语及相应的替换方法集合
|
Map<String,String> |
clearReplaceWordMap()
该方法用于清空存储的替换词语集合,并返回原始存储的内容
|
String[] |
getPlaceholderSign()
该方法用于返回占位符的起始与结束标志,在数组中,第一个元素表示起始标志,第二个元素表示结束标志
|
List<String> |
getPlaceholderWord(String text)
该方法用于提取文本内容中的所有占位符词语,提取的词语不包含占位符起止标志
|
Map<String,DataFunction> |
getReplaceFunctionMap()
该方法用于返回添加待替换的词语及相应的替换方法集合
|
Map<String,String> |
getReplaceWordMap()
该方法用于返回当前存储的替换词语集合,修改返回的集合不影响类中存储的集合内容
|
boolean |
isContainsPlaceholder(String text)
该方法用于判断传入的文本中是否包含占位符
|
boolean |
isExistReplaceContent()
该方法用于判断当前是否存在需要替换的内容
|
String |
packagePlaceholder(String placeholderWord)
该方法用于将传入的词语,根据当前存储的占位符起止标志,组装成带起止标志的占位符字符串
|
String |
replaceText(String text)
该方法用于对文本中的占位符进行替换
|
String |
replaceWord(String word)
该方法用于对需要替换的词语进行转换,输出该词语对应的替换后的内容
|
String |
sequentialReplaceText(String text,
boolean isReplaceWordRecycling,
List<String> replaceWordList)
该方法用于按照文本中占位符的顺序,将替换内容集合逐个对文本中的占位符进行替换
|
Placeholder |
setPlaceholderSign(String startSign,
String endSign)
该方法用于设置占位符的起始与结束标志
|
Placeholder |
setReplaceDepth(int count)
该方法用于设置替换占位符的深度(替换次数),避免嵌套替换占位符导致死循环
|
public Placeholder(String startSign, String endSign)
startSign
- 占位符起始标志endSign
- 占位符结束标志public Placeholder(Placeholder placeholder)
placeholder
- 已有的占位符类对象public Placeholder setPlaceholderSign(String startSign, String endSign)
startSign
- 占位符起始标志endSign
- 占位符结束标志public String[] getPlaceholderSign()
public Placeholder setReplaceDepth(int count)
该数值主要用在词语嵌套替换时会生效,非嵌套替换或无法被替换的占位符不受该数值的影响。例如,设置占位符起始与结束标志均为“#”符号, 存储占位符“1”的替换内容为“#2#”,存储占位符“2”的替换内容为“#3#”;则当需要替换的内容为“内容:#1#”时:
注意:深度必须设置大于等于0次(0次则表示不替换),若设置的深度为负数,则不会生效,将沿用上一次设置的值(初次设置为负数时,则使用默认次数,默认次数为10次)
count
- 嵌套替换深度public Placeholder addReplaceFunction(String regex, DataFunction function)
该方法允许添加待替换词语的处理方式,在写入用例时,若指定的待替换内容符合此方法指定的正则时,则会使用存储的替换方式,
对词语进行替换。例如,占位符前后标志均为“#”,则:
@Test
public void addReplaceWordTest_DataDriverFunction() {
// 定义词语匹配规则和处理方式,当匹配到正则后,将获取“随机:”后的字母
// 若字母为“N”,则随机生成两位数字字符串
// 若字母为“Y”,则随机生成两位中文字符串
test.addReplaceWord(new DataDriverFunction("随机:[NC]", text -> {
return "N".equals(text.split(":")[1]) ? RandomString.randomString(2, 2, StringMode.NUM)
: RandomString.randomString(2, 2, StringMode.CH);
}));
// 输出:“内容:53”(两位随机数字)
System.out.println(test.replaceText("内容:#随机:N#"));
// 输出:“内容:谁当”(两位随机中文)
System.out.println(test.replaceText("内容:#随机:C#"));
}
部分定义方法可调用工具类Functions
类获取,以其中一个方法为例,其传参方法为如下:
DataDriverFunction
driverFunction = Functions.randomCarId()
;
addReplaceFunction(DataDriverFunction.getRegex()
, DataDriverFunction.getFunction()
);
regex
- 需要替换的内容正则表达式function
- 替换词语使用的函数public Placeholder addReplaceFunction(Map<String,DataFunction> functionMap, boolean isRepeatSkip)
集合的键为占位符的词语,值为替换的方法,可参考addReplaceFunction(String, DataFunction)
的方法添加
functionMap
- 替换方法集合isRepeatSkip
- 是否跳过已存储的占位符正则public Map<String,DataFunction> getReplaceFunctionMap()
集合的键为占位符的词语,值为替换的方法
public Map<String,DataFunction> clearReplaceFunction()
public Placeholder addReplaceWord(String word, String replaceWord)
word
- 待替换的占位符词语replaceWord
- 被替换的内容public Placeholder addReplaceWord(Map<String,String> wordMap, boolean isRepeatSkip)
wordMap
- 占位符词语集合isRepeatSkip
- 是否跳过已存储的占位符词语public Map<String,String> getReplaceWordMap()
返回的集合中,键为占位符词语,值为替换的内容
public Map<String,String> clearReplaceWordMap()
getReplaceWordMap()
public Placeholder addPlaceholder(Placeholder placeholder, boolean isRepeatSkip)
placeholder
- 占位符类对象isRepeatSkip
- 是否跳过已存储的占位符词语public String replaceWord(String word)
注意:
word
- 需要替换的词语public String replaceText(String text)
text
- 需要替换内容public String sequentialReplaceText(String text, boolean isReplaceWordRecycling, List<String> replaceWordList)
text
- 待替换文本isReplaceWordRecycling
- 是否循环替换词语,即当替换词语集合遍历完毕后,若当前仍有未被替换的占位符时,则重新开始遍历替换词语集合replaceWordList
- 替换词语集合public List<String> getPlaceholderWord(String text)
text
- 查找占位符的文本public String packagePlaceholder(String placeholderWord)
placeholderWord
- 占位符词语public boolean isContainsPlaceholder(String text)
注意:该方法只判断传入文本中是否包含占位符起止标志,不判断占位符中的内容是否包含在已存储的替换内容中
text
- 需要判断的文本public boolean isExistReplaceContent()
Copyright © 2024. All rights reserved.