All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.wiztools.commons.CharacterEscaper Maven / Gradle / Ivy

/*
 * Copyright WizTools.org
 * Licensed under the Apache License, Version 2.0:
 * http://www.apache.org/licenses/LICENSE-2.0
 */

package org.wiztools.commons;

import java.util.Arrays;

/**
 * Escapes specified characters in string with a `\' prefix.
 * @author subwiz
 */
public class CharacterEscaper {
    final char[] charsToEscape;

    public CharacterEscaper(String str) {
        this(str.toCharArray());
    }
    
    public CharacterEscaper(char[] charsToEscape) {
        this.charsToEscape = Arrays.copyOf(charsToEscape, charsToEscape.length);
        Arrays.sort(this.charsToEscape);
    }
    
    /**
     * Escape the characters in the given string and return the escaped string.
     * @param str The input string.
     * @return The escaped string.
     */
    public String escape(String str) {
        final StringBuilder sb = new StringBuilder();
        for(char c: str.toCharArray()) {
            if(Arrays.binarySearch(charsToEscape, c) >= 0) {
                sb.append('\\').append(c);
            }
            else {
                sb.append(c);
            }
        }
        return sb.toString();
    }

    /**
     * 
     * @return The characters to escape.
     */
    @Override
    public String toString() {
        return new String(charsToEscape);
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy