mirror of
https://github.com/Kingsrook/qqq.git
synced 2025-07-18 05:01:07 +00:00
add methods: maskAndTruncate; nCopies; nCopiesWithGlue
This commit is contained in:
@ -23,6 +23,7 @@ package com.kingsrook.qqq.backend.core.utils;
|
||||
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
@ -475,4 +476,59 @@ public class StringUtils
|
||||
return (s);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
**
|
||||
*******************************************************************************/
|
||||
public static String maskAndTruncate(String value)
|
||||
{
|
||||
return (maskAndTruncate(value, "** MASKED **", 6, 4));
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
**
|
||||
*******************************************************************************/
|
||||
public static String maskAndTruncate(String value, String mask, int minLengthToMask, int charsToShowOnEnds)
|
||||
{
|
||||
if(!hasContent(value))
|
||||
{
|
||||
return ("");
|
||||
}
|
||||
|
||||
if(value.length() < minLengthToMask || value.length() < 2 * charsToShowOnEnds)
|
||||
{
|
||||
return mask;
|
||||
}
|
||||
|
||||
if(value.length() < charsToShowOnEnds * 3)
|
||||
{
|
||||
return (value.substring(0, charsToShowOnEnds) + mask);
|
||||
}
|
||||
|
||||
return (value.substring(0, charsToShowOnEnds) + mask + value.substring(value.length() - charsToShowOnEnds));
|
||||
}
|
||||
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
**
|
||||
***************************************************************************/
|
||||
public static String nCopies(int n, String s)
|
||||
{
|
||||
return (nCopiesWithGlue(n, s, ""));
|
||||
}
|
||||
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
**
|
||||
***************************************************************************/
|
||||
public static String nCopiesWithGlue(int n, String s, String glue)
|
||||
{
|
||||
return (StringUtils.join(glue, Collections.nCopies(n, s)));
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -333,4 +333,76 @@ class StringUtilsTest extends BaseTest
|
||||
assertEquals("a", StringUtils.emptyToNull("a"));
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
**
|
||||
*******************************************************************************/
|
||||
@Test
|
||||
void testNCopies()
|
||||
{
|
||||
assertEquals("", StringUtils.nCopies(0, "a"));
|
||||
assertEquals("a", StringUtils.nCopies(1, "a"));
|
||||
assertEquals("aa", StringUtils.nCopies(2, "a"));
|
||||
assertEquals("ab ab ab ", StringUtils.nCopies(3, "ab "));
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
**
|
||||
*******************************************************************************/
|
||||
@Test
|
||||
void testNCopiesWithGlue()
|
||||
{
|
||||
assertEquals("", StringUtils.nCopiesWithGlue(0, "a", ""));
|
||||
assertEquals("", StringUtils.nCopiesWithGlue(0, "a", ","));
|
||||
assertEquals("a", StringUtils.nCopiesWithGlue(1, "a", ","));
|
||||
assertEquals("aa", StringUtils.nCopiesWithGlue(2, "a", ""));
|
||||
assertEquals("a,a", StringUtils.nCopiesWithGlue(2, "a", ","));
|
||||
assertEquals("ab ab ab", StringUtils.nCopiesWithGlue(3, "ab", " "));
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
**
|
||||
*******************************************************************************/
|
||||
@Test
|
||||
void testMaskAndTruncate()
|
||||
{
|
||||
assertEquals("", StringUtils.maskAndTruncate(null));
|
||||
assertEquals("", StringUtils.maskAndTruncate(""));
|
||||
assertEquals("** MASKED **", StringUtils.maskAndTruncate("1"));
|
||||
assertEquals("** MASKED **", StringUtils.maskAndTruncate("12"));
|
||||
assertEquals("** MASKED **", StringUtils.maskAndTruncate("123"));
|
||||
assertEquals("** MASKED **", StringUtils.maskAndTruncate("1234"));
|
||||
assertEquals("** MASKED **", StringUtils.maskAndTruncate("12345"));
|
||||
assertEquals("** MASKED **", StringUtils.maskAndTruncate("123456"));
|
||||
assertEquals("** MASKED **", StringUtils.maskAndTruncate("1234567"));
|
||||
assertEquals("1234** MASKED **", StringUtils.maskAndTruncate("12345678"));
|
||||
assertEquals("1234** MASKED **", StringUtils.maskAndTruncate("123456789"));
|
||||
assertEquals("1234** MASKED **", StringUtils.maskAndTruncate("1234567890"));
|
||||
assertEquals("1234** MASKED **", StringUtils.maskAndTruncate("12345678901"));
|
||||
assertEquals("1234** MASKED **9012", StringUtils.maskAndTruncate("123456789012"));
|
||||
assertEquals("1234** MASKED **6789", StringUtils.maskAndTruncate("123456789" + StringUtils.nCopies(100, "xyz") + "123456789"));
|
||||
|
||||
assertEquals("***", StringUtils.maskAndTruncate("12", "***", 3, 1));
|
||||
assertEquals("1***3", StringUtils.maskAndTruncate("123", "***", 3, 1));
|
||||
assertEquals("1***4", StringUtils.maskAndTruncate("1234", "***", 3, 1));
|
||||
assertEquals("1***5", StringUtils.maskAndTruncate("12345", "***", 3, 1));
|
||||
assertEquals("12***", StringUtils.maskAndTruncate("12345", "***", 3, 2));
|
||||
assertEquals("12***56", StringUtils.maskAndTruncate("123456", "***", 3, 2));
|
||||
|
||||
assertEquals("***", StringUtils.maskAndTruncate("12", "***", 3, 4));
|
||||
assertEquals("***", StringUtils.maskAndTruncate("123", "***", 3, 4));
|
||||
assertEquals("***", StringUtils.maskAndTruncate("1234", "***", 3, 4));
|
||||
assertEquals("***", StringUtils.maskAndTruncate("12345", "***", 3, 4));
|
||||
assertEquals("***", StringUtils.maskAndTruncate("12345", "***", 3, 4));
|
||||
assertEquals("***", StringUtils.maskAndTruncate("123456", "***", 3, 4));
|
||||
assertEquals("1234***", StringUtils.maskAndTruncate("1234567890", "***", 3, 4));
|
||||
assertEquals("1234***", StringUtils.maskAndTruncate("12345678901", "***", 3, 4));
|
||||
assertEquals("1234***9012", StringUtils.maskAndTruncate("123456789012", "***", 3, 4));
|
||||
}
|
||||
|
||||
}
|
||||
|
Reference in New Issue
Block a user