📄 stringutils.java
字号:
/*
* XP Forum
*
* Copyright (c) 2002-2003 RedSoft Group. All rights reserved.
*
*/
package org.redsoft.forum.util;
/**
* String processing utilities
*
* @author <a href="mailto:jwtronics@yahoo.com">John Wong</a>
*
* @version $Id: StringUtils.java,v 1.1.1.1 2003/07/08 08:25:17 cinc Exp $
*/
public final class StringUtils {
// constants used by escapeHTMLTags
private static final char[] QUOTE_ENCODE = """.toCharArray();
private static final char[] AMP_ENCODE = "&".toCharArray();
private static final char[] LT_ENCODE = "<".toCharArray();
private static final char[] GT_ENCODE = ">".toCharArray();
private static final char[] APOS_ENCODE = "'".toCharArray();
private static final char[] DOUBLT_QUOTE_ENCODE = """.toCharArray();
/**
* This method takes a string which may contain HTML tags (ie, <b>,
* <table>, etc) and converts the '<'' and '>' characters to
* their HTML escape sequences.
*
* @param in the text to be converted.
* @return the input string with the characters '<' and '>' replaced
* with their HTML escape sequences.
*/
public static final String escapeHTMLTags(String in) {
if (in == null) {
return null;
}
char ch;
int i = 0;
int last = 0;
char[] input = in.toCharArray();
int len = input.length;
StringBuffer out = new StringBuffer((int) (len * 1.3));
for (; i < len; i++) {
ch = input[i];
if (ch > '>') {
continue;
} else if (ch == '<') {
if (i > last) {
out.append(input, last, i - last);
}
last = i + 1;
out.append(LT_ENCODE);
} else if (ch == '>') {
if (i > last) {
out.append(input, last, i - last);
}
last = i + 1;
out.append(GT_ENCODE);
}else if( ch== '"'){
if (i > last) {
out.append(input, last, i - last);
}
last = i + 1;
out.append(DOUBLT_QUOTE_ENCODE);
}
}
if (last == 0) {
return in;
}
if (i > last) {
out.append(input, last, i - last);
}
return out.toString();
}
/**
* This method takes a string which may contain HTML tags (ie, <b>,
* <table>, etc) and converts the '<'' and '>' characters to
* their HTML escape sequences.
*
* @param in the text to be converted.
* @return the input string with the characters '<' and '>' replaced
* with their HTML escape sequences.
*/
public static final String escapeHTMLTagsButHref(String in) {
if (in == null) {
return null;
}
char ch;
int i = 0;
int last = 0;
char[] input = in.toCharArray();
int len = input.length;
boolean ahref = false;
boolean img = false;
StringBuffer out = new StringBuffer((int) (len * 1.3));
for (; i < len; i++) {
ch = input[i];
if( ahref ){
if( ch == '<' && input[ i+1 ] == '/' && input[i+2] == 'a' && input[ i+3 ] == '>' ){
i = i + 3;
ahref = false;
}else if(ch == '<') {
if (i > last) {
out.append(input, last, i - last);
}
last = i + 1;
out.append(LT_ENCODE);
}else if( ch== '"'){
if (i > last) {
out.append(input, last, i - last);
}
last = i + 1;
out.append(DOUBLT_QUOTE_ENCODE);
}
}else if( img ){
if( ch== '/' && input[ i+ 1 ] == '>' ){
i++;
img = false;
}else if(ch == '<') {
if (i > last) {
out.append(input, last, i - last);
}
last = i + 1;
out.append(LT_ENCODE);
}else if( ch== '"'){
if (i > last) {
out.append(input, last, i - last);
}
last = i + 1;
out.append(DOUBLT_QUOTE_ENCODE);
}
}else{
if( ch == '<' && input[ i + 1 ] == 'a' ){
ahref = true;
}else if( ch == '<' && input[i+1] == 'i' && input[i+2] == 'm' && input[i+3] == 'g'){
img = true;
}else{
if(ch == '<') {
if (i > last) {
out.append(input, last, i - last);
}
last = i + 1;
out.append(LT_ENCODE);
}else if (ch == '>') {
if (i > last) {
out.append(input, last, i - last);
}
last = i + 1;
out.append(GT_ENCODE);
}else if( ch== '"'){
if (i > last) {
out.append(input, last, i - last);
}
last = i + 1;
out.append(DOUBLT_QUOTE_ENCODE);
}else if( ch == '\n' ){
if (i > last) {
out.append(input, last, i - last);
}
last = i + 1;
out.append("<br>");
}else if( ch == ' ' ){
if (i > last) {
out.append(input, last, i - last);
}
last = i + 1;
out.append(" ");
}
}
}
}
if (last == 0) {
return in;
}
if (i > last) {
out.append(input, last, i - last);
}
return out.toString();
}
/**
* If two String are equal
*/
public static boolean isEqual(String str1, String str2) {
if(str1 == null && str2 != null) return false;
if(str1.equals(str2)) return true;
return false;
}
public static String replaceNewLine( final String in ){
if (in == null) {
return null;
}
char ch;
char[] input = in.toCharArray();
int len = input.length;
final StringBuffer out = new StringBuffer((int) (len * 1.3));
for ( int index = 0; index < len; index++) {
ch = input[ index ];
if( ch == '\n' ){
out.append("<br>");
}else if( ch == ' ' ){
out.append(" ");
}else{
out.append( ch );
}
}
return out.toString();
}
}//EOC
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -