package com.pi4j.util;
/*
* #%L
* **********************************************************************
* ORGANIZATION : Pi4J
* PROJECT : Pi4J :: Java Library (Core)
* FILENAME : StringUtil.java
*
* This file is part of the Pi4J project. More information about
* this project can be found here: http://www.pi4j.com/
* **********************************************************************
* %%
* Copyright (C) 2012 - 2013 Pi4J
* %%
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
* #L%
*/
public class StringUtil {
public static final String EMPTY = "";
public static final char DEFAULT_PAD_CHAR = ' ';
public static boolean isNullOrEmpty(String data, boolean trim){
if(data == null)
return true;
// trim if requested
String test = data;
if(trim)
test = data.trim();
return (test.length() <= 0);
}
public static boolean isNullOrEmpty(String data){
return isNullOrEmpty(data, false);
}
public static boolean isNotNullOrEmpty(String data){
return isNotNullOrEmpty(data, false);
}
public static boolean isNotNullOrEmpty(String data, boolean trim){
return !(isNullOrEmpty(data, trim));
}
public static boolean contains(String source, String target) {
if (null != source && null != target) {
return source.contains(target);
}
return false;
}
public static boolean contains(String source, String[] targets) {
if (null != source && null != targets) {
for (int i=0; i<targets.length; i++) {
if (source.indexOf(targets[i]) >= 0) {
return true;
}
}
}
return false;
}
public static boolean contains(String[] sources, String target) {
if (null != sources && null != target) {
for (String source : sources) {
if(contains(source, target))
return true;
}
}
return false;
}
public static boolean contains(String[] sources, String[] targets) {
if (null != sources && null != targets) {
for (String source : sources) {
if(contains(source, targets))
return true;
}
}
return false;
}
public static String create(int length) {
return create(DEFAULT_PAD_CHAR, length);
}
public static String create(char c, int length) {
StringBuilder sb = new StringBuilder(length);
for(int index = 0; index < length; index++)
sb.append(c);
return sb.toString();
}
public static String create(String s, int length) {
StringBuilder sb = new StringBuilder(length * s.length());
for(int index = 0; index < length; index++)
sb.append(s);
return sb.toString();
}
public static String padLeft(String data, int length) {
return padLeft(data, DEFAULT_PAD_CHAR, length);
}
public static String padLeft(String data, char pad, int length) {
StringBuilder sb = new StringBuilder(data.length() + length);
for(int index = 0; index < length; index++)
sb.append(pad);
sb.append(data);
return sb.toString();
}
public static String padLeft(String data, String pad, int length) {
StringBuilder sb = new StringBuilder(data.length() + (length * pad.length()));
for(int index = 0; index < length; index++)
sb.append(pad);
sb.append(data);
return sb.toString();
}
public static String padRight(String data, int length) {
return padRight(data, DEFAULT_PAD_CHAR, length);
}
public static String padRight(String data, char pad, int length) {
StringBuilder sb = new StringBuilder(data.length() + length);
sb.append(data);
for(int index = 0; index < length; index++)
sb.append(pad);
return sb.toString();
}
public static String padRight(String data, String pad, int length) {
StringBuilder sb = new StringBuilder(data.length() + (length * pad.length()));
sb.append(data);
for(int index = 0; index < length; index++)
sb.append(pad);
return sb.toString();
}
public static String pad(String data, int length) {
return pad(data, DEFAULT_PAD_CHAR, length);
}
public static String pad(String data, char pad, int length) {
StringBuilder sb = new StringBuilder(data.length() + length);
sb.append(create(pad, length));
sb.append(data);
sb.append(create(pad, length));
return sb.toString();
}
public static String pad(String data, String pad, int length) {
StringBuilder sb = new StringBuilder(data.length() + length);
sb.append(create(pad, length));
sb.append(data);
sb.append(create(pad, length));
return sb.toString();
}
public static String padCenter(String data, int length) {
return padCenter(data, DEFAULT_PAD_CHAR, length);
}
public static String padCenter(String data, char pad, int length) {
if(data.length() < length) {
int needed = length - data.length();
int padNeeded = needed / 2;
StringBuilder result = new StringBuilder();
result.append(create(pad, padNeeded));
result.append(data);
result.append(create(pad, padNeeded));
int remaining = length - result.length();
result.append(create(pad, remaining));
return result.toString();
}
return data;
}
public static String trimLeft(String data) {
return trimLeft(data, DEFAULT_PAD_CHAR);
}
public static String trimLeft(String data, char trim) {
for(int index = 0; index < data.length(); index++)
if(!(data.charAt(index) == trim))
return data.substring(index);
return EMPTY;
}
public static String trimRight(String data) {
return trimRight(data, DEFAULT_PAD_CHAR);
}
public static String trimRight(String data, char trim) {
int count = 0;
for(int index = data.length(); index > 0; index--)
if(data.charAt(index-1) == trim)
count++;
else
return data.substring(0, data.length() - count);
return EMPTY;
}
public static String trim(String data) {
return trim(data, DEFAULT_PAD_CHAR);
}
public static String trim(String data, char trim) {
String result = trimLeft(data, trim);
return trimRight(result, trim);
}
}