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.Collection;
|
||||||
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.regex.Matcher;
|
import java.util.regex.Matcher;
|
||||||
import java.util.regex.Pattern;
|
import java.util.regex.Pattern;
|
||||||
@ -475,4 +476,59 @@ public class StringUtils
|
|||||||
return (s);
|
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"));
|
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