Skip to content

Instantly share code, notes, and snippets.

@EasyG0ing1
Last active June 6, 2022 16:02
Show Gist options
  • Save EasyG0ing1/a3230b31c1490b629d5b840f9d4f9c81 to your computer and use it in GitHub Desktop.
Save EasyG0ing1/a3230b31c1490b629d5b840f9d4f9c81 to your computer and use it in GitHub Desktop.
Custom StringBuilder Class
import java.util.LinkedList;
public class CStringBuilder {
private final StringBuilder masterBuilder = new StringBuilder();
public CStringBuilder() {
}
public CStringBuilder(char[] str) {
this();
addString(str);
}
public CStringBuilder(String str) {
this();
addString(str);
},
/*
*
* Special methods for unique characters
*
*/
public CStringBuilder cr(int carriageReturnCount) {
addString("\n", carriageReturnCount);
return this;
}
public CStringBuilder cr() {
addString("\n");
return this;
}
public CStringBuilder qt(int quoteCount) {
addString("\"", quoteCount);
return this;
}
public CStringBuilder qt() {
addString("\"");
return this;
}
public CStringBuilder qm(int questionMarkCount) {
addString("?",questionMarkCount);
return this;
}
public CStringBuilder qm() {
addString("?");
return this;
}
public CStringBuilder c(int colonCount) {
addString(":",colonCount);
return this;
}
public CStringBuilder c() {
addString(":");
return this;
}
public CStringBuilder s(int semiColonCount) {
addString(";",semiColonCount);
return this;
}
public CStringBuilder s() {
addString(";");
return this;
}
public CStringBuilder p(int periodCount) {
addString(".",periodCount);
return this;
}
public CStringBuilder p() {
addString(".");
return this;
}
public CStringBuilder t(int tabCount) {
addString("\t",tabCount);
return this;
}
public CStringBuilder t() {
addString("\t");
return this;
}
public CStringBuilder sp(int spacesCount) {
addString(" ",spacesCount);
return this;
}
public CStringBuilder sp() {
addString(" ");
return this;
}
public CStringBuilder d(int dashCount) {
addString("-",dashCount);
return this;
}
public CStringBuilder d() {
addString("-");
return this;
}
public CStringBuilder e(int equalCount) {
addString("=",equalCount);
return this;
}
public CStringBuilder e() {
addString("=");
return this;
}
public CStringBuilder u(int underlineCount) {
addString("_",underlineCount);
return this;
}
public CStringBuilder u() {
addString("_");
return this;
}
public CStringBuilder po(int parenthesisOpenCount) {
addString("(",parenthesisOpenCount);
return this;
}
public CStringBuilder po() {
addString("(");
return this;
}
public CStringBuilder fs(int forwardSlashCount) {
addString("/",forwardSlashCount);
return this;
}
public CStringBuilder fs() {
addString("/");
return this;
}
public CStringBuilder amp(int ampersandCount) {
addString("&",ampersandCount);
return this;
}
public CStringBuilder amp() {
addString("&");
return this;
}
public CStringBuilder pc(int parenthesisCloseCount) {
addString(")",parenthesisCloseCount);
return this;
}
public CStringBuilder pc() {
addString(")");
return this;
}
public CStringBuilder cm(int commaCount) {
addString(",",commaCount);
return this;
}
public CStringBuilder cm() {
addString(",");
return this;
}
public CStringBuilder comma(int count) {
addString(",",count);
return this;
}
public CStringBuilder comma() {
addString(",");
return this;
}
public CStringBuilder cbo(int curleyBracketOpenCount) {
addString("{",curleyBracketOpenCount);
return this;
}
public CStringBuilder cbo() {
addString("{");
return this;
}
public CStringBuilder cbc(int curleyBracketCloseCount) {
addString("}",curleyBracketCloseCount);
return this;
}
public CStringBuilder cbc() {
addString("}");
return this;
}
public CStringBuilder bo(int bracketOpenCount) {
addString("[",bracketOpenCount);
return this;
}
public CStringBuilder bo() {
addString("[");
return this;
}
public CStringBuilder bc(int bracketCloseCount) {
addString("]",bracketCloseCount);
return this;
}
public CStringBuilder bc() {
addString("]");
return this;
}
public CStringBuilder pp(int pipeCount) {
addString("|",pipeCount);
return this;
}
public CStringBuilder pp() {
addString("|");
return this;
}
public CStringBuilder pi(int piCount) {
addString((char) 960, piCount);
return this;
}
public CStringBuilder pi() {
addString((char) 960);
return this;
}
public CStringBuilder al(String line){
addString(line + "\n");
return this;
}
public CStringBuilder apple(int appleSymbolCount) {
addString((char) 63743, appleSymbolCount);
return this;
}
public CStringBuilder apple() {
addString((char) 63743);
return this;
}
public CStringBuilder sa(int count) {
addString((char) 945, count);
return this;
}
public CStringBuilder sa() {
addString((char) 945);
return this;
}
public CStringBuilder sb(int count) {
addString((char) 946, count);
return this;
}
public CStringBuilder sb() {
addString((char) 946);
return this;
}
public CStringBuilder sl(int count) {
addString((char) 955, count);
return this;
}
public CStringBuilder sl() {
addString((char) 955);
return this;
}
public CStringBuilder sm(int count) {
addString((char) 956, count);
return this;
}
public CStringBuilder sm() {
addString((char) 956);
return this;
}
public CStringBuilder so(int count) {
addString((char) 937, count);
return this;
}
public CStringBuilder so() {
addString((char) 937);
return this;
}
public CStringBuilder ss(int count) {
addString((char) 8721);
return this;
}
public CStringBuilder ss() {
addString((char) 8721);
return this;
}
public CStringBuilder append(String str) {
addString(str);
return this;
}
public CStringBuilder a(String str, int count) {
addString(str,count);
return this;
}
public CStringBuilder a(String str) {
addString(str);
return this;
}
/*
*
* User Interaction Methods
*
*/
public CStringBuilder append(Object item) {
addString(item);
return this;
}
public CStringBuilder a(Object item) {
addString(item);
return this;
}
public CStringBuilder append(char[] ... strChar) {
for (char[] c : strChar) {
addString(c);
}
return this;
}
public CStringBuilder a(char[] ... strChar) {
for (char[] c : strChar) {
addString(c);
}
return this;
}
public CStringBuilder append(String ... text) {
for(String str : text) {
addString(str);
}
return this;
}
public CStringBuilder a(String ... text) {
for(String str : text) {
addString(str);
}
return this;
}
public CStringBuilder append(char[] chr, int count) {
addString(new String(chr),count);
return this;
}
public CStringBuilder a(char[] chr, int count) {
addString(new String(chr),count);
return this;
}
public CStringBuilder append(Object ... object) {
for(Object obj : object) {
addString(obj);
}
return this;
}
public CStringBuilder a(Object ... object) {
for(Object obj : object) {
addString(obj);
}
return this;
}
public CStringBuilder append(Object item, int count) {
addString(item,count);
return this;
}
public CStringBuilder a(Object item, int count) {
addString(item,count);
return this;
}
public CStringBuilder append(char[] str) {
addString(str);
return this;
}
public CStringBuilder a(char[] str) {
addString(str);
return this;
}
public CStringBuilder append(LinkedList<char[]> list) {
for (char[] c : list) {
addString(c);
}
return this;
}
public CStringBuilder a(LinkedList<char[]> list) {
for (char[] c : list) {
addString(c);
}
return this;
}
/*
*
* Private Methods
*
*/
private void addString(String str, int count) {
for (int x = 0; x < count; x++) {
addStringFinal(str);
}
}
private void addString(Object ch, int count) {
String newString = ch.toString();
addString(newString,count);
}
private void addString(Object ch) {
String newString = ch.toString();
addStringFinal(newString);
}
private void addString(String str) {
addStringFinal(str);
}
private void addStringFinal(String str) {
masterBuilder.append(str);
}
public Integer getLength() {
return masterBuilder.toString().length();
}
@Override
public String toString() {
return masterBuilder.toString();
}
/*
*
* Public static methods to get information about what the Class can do
*
*/
public static void printCommands() {
CStringBuilder csb = new CStringBuilder();
csb.a(" qt = \"").t(2).a("cbo = {").cr();
csb.a(" qm = ?").t(2).a("cbc = }").cr();
csb.a(" c = :").t(2).a(" bo = [").cr();
csb.a(" s = ;").t(2).a(" bc = ]").cr();
csb.a(" t = tab").t().a(" pp = |").cr();
csb.a(" sp = space").t().a(" pi = " + (char) 960).cr();
csb.a(" d = -").t(2).a(" apple = " + (char) 63743).cr();
csb.a(" e = =").t(2).a(" sa = " + (char) 945).cr();
csb.a(" u = _").t(2).a(" sb = " + (char) 946).cr();
csb.a(" po = (").t(2).a(" sl = " + (char) 955).cr();
csb.a(" pc = )").t(2).a(" sm = " + (char) 956).cr();
csb.a(" fs = /").t(2).a(" so = " + (char) 937).cr();
csb.a("amp = &").t(2).a(" ss = " + (char) 8721).cr();
csb.a(" cm = ,").cr();
System.out.println(csb.toString());
}
public static void getOptions() {printCommands();}
public static void printOutOptions() {printCommands();}
}
import picocli.CommandLine.Command;
import picocli.CommandLine.Option;
import picocli.CommandLine.Parameters;
import java.io.File;
import java.math.BigInteger;
import java.nio.file.Files;
import java.security.MessageDigest;
import java.util.concurrent.Callable;
@Command(name = "checksum",
description = "Prints the checksum (MD5 by default) of a file to STDOUT.",
version = "checksum 1.0",
synopsisHeading = "Usage: ",
parameterListHeading = "%nParameters:%n",
optionListHeading = "%nOptions:%n",
mixinStandardHelpOptions = true,
footer = "%nDeveloper Contact: @|underline masterjavaofficial@gmail.com|@")
public class CheckSum implements Callable<Void> {
@Option(names = {"-a", "--algorithm"},
description = "MD5, SHA-1, SHA-256, ...")
private String algorithm = "MD5";
@Parameters(index = "0",
description = "The file whose checksum to calculate.")
private File file;
@Override
public Void call() throws Exception {
byte[] fileContents = Files.readAllBytes(file.toPath());
byte[] digest = MessageDigest.getInstance(algorithm).digest(fileContents);
System.out.printf("%0" + (digest.length * 2) + "x%n", new BigInteger(1, digest));
return null;
}
}
@EasyG0ing1
Copy link
Author

I like StringBuilder, but I don't like the cumbersome use of .append("") so I found this write up on making a custom String Builder Class and I created this one...

I made this for myself but I found it to be so handy, I thought maybe someone else could benefit from it...

Handy Features: all of these can be repeated x number of times by adding the count, or in the case of .a you add a comma then the count like this

Examples

Method What Gets Appended
.a(myString,5) would repeat append your string 5 times.
.a(char[],x) append a char array x number of times
.a(char[], char[]) apend two unique char[]'s with one command
.a(char[], char[], char[]) Or three different ones...
.a(LinkedList<char[]>) OR, build your char[]'s into a linked list and it will iterate through them and append each one in order (using default iteration order).
.t() appends a single tab
.t(5) appends 5 consecutive tabs ...

You get the idea ...

Method What Gets Appended
.a Short for append
.a("",int) Repeat your append by the int number.
.c() Colon :
.cm() Comma ,
.cr() Return ( \n )
.d() Dash -
.e() Equal sign =
.s() Semicolon ;
.sp() Space
.q() Quotation Mark "
.t() Tab
Method Special Characters
.pp Pipe |
.cbo Curley Braces Open {
.cbc Curley Braces Closed }
.po Parenthese Open (
.pc Parenthese Closed )
.u() Underscore _
.e() Equal Sign =

Scientific Notations all begin with s

Method What Gets Appended
.sa() Alpha α
.sb() Beta β
.sl() Lamda λ
.sm() Mu μ
.so() Omega Ω
.ss() Sigma ∑

Miscellaneous

Method Description
.pi() append pi π
.al() append apple logo 

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment