Java Tutorial/Data Type/Escape Sequences
Версия от 17:44, 31 мая 2010; (обсуждение)
Содержание
- 1 Character Escape Sequences
- 2 Convert lines into the canonical format, that is, terminate lines with the CRLF sequence.
- 3 Determines if this is a quoted argumented - either single or double quoted.
- 4 Returns the quoted version of the string using the quotechar argument.
- 5 Table for escape sequence character
- 6 \\: to specify a backslash character as a character literal or in a text string
Character Escape Sequences
A backslash indicates the start of an escape sequence.
An escape sequence for a Unicode character: adding "\u" in front of the code
Website for unicode http://www.unicode.org/
public class MainClass{
public static void main(String[] arg){
char myCharacter = "\u0058";
System.out.println(myCharacter);
}
}
X
Convert lines into the canonical format, that is, terminate lines with the CRLF sequence.
import java.io.FilterOutputStream;
import java.io.IOException;
import java.io.OutputStream;
/**
* Convert lines into the canonical format, that is, terminate lines with the
* CRLF sequence.
*
* @author John Mani
*/
public class CRLFOutputStream extends FilterOutputStream {
protected int lastb = -1;
protected boolean atBOL = true; // at beginning of line?
private static final byte[] newline = { (byte) "\r", (byte) "\n" };
public CRLFOutputStream(OutputStream os) {
super(os);
}
public void write(int b) throws IOException {
if (b == "\r") {
writeln();
} else if (b == "\n") {
if (lastb != "\r")
writeln();
} else {
out.write(b);
atBOL = false;
}
lastb = b;
}
public void write(byte b[]) throws IOException {
write(b, 0, b.length);
}
public void write(byte b[], int off, int len) throws IOException {
int start = off;
len += off;
for (int i = start; i < len; i++) {
if (b[i] == "\r") {
out.write(b, start, i - start);
writeln();
start = i + 1;
} else if (b[i] == "\n") {
if (lastb != "\r") {
out.write(b, start, i - start);
writeln();
}
start = i + 1;
}
lastb = b[i];
}
if ((len - start) > 0) {
out.write(b, start, len - start);
atBOL = false;
}
}
/*
* Just write out a new line, something similar to out.println()
*/
public void writeln() throws IOException {
out.write(newline);
atBOL = true;
}
}
Determines if this is a quoted argumented - either single or double quoted.
import java.io.File;
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You 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.
*
*@author
*/
public class Main {
private static final String SINGLE_QUOTE = "\"";
private static final String DOUBLE_QUOTE = "\"";
private static final char SLASH_CHAR = "/";
private static final char BACKSLASH_CHAR = "\\";
/**
* Determines if this is a quoted argumented - either single or
* double quoted.
*
* @param argument the argument to check
* @return true when the argument is quoted
*/
public static boolean isQuoted(final String argument) {
return ( argument.startsWith( SINGLE_QUOTE ) || argument.startsWith( DOUBLE_QUOTE ) ) &&
( argument.endsWith( SINGLE_QUOTE ) || argument.endsWith( DOUBLE_QUOTE ) );
}
}
Returns the quoted version of the string using the quotechar argument.
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.StringWriter;
/* Copyright (c) 1995-2000, The Hypersonic SQL Group.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice, this
* list of conditions and the following disclaimer.
*
* Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
*
* Neither the name of the Hypersonic SQL Group nor the names of its
* contributors may be used to endorse or promote products derived from this
* software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE HYPERSONIC SQL GROUP,
* OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* This software consists of voluntary contributions made by many individuals
* on behalf of the Hypersonic SQL Group.
*
*
* For work added by the HSQL Development Group:
*
* Copyright (c) 2001-2009, The HSQL Development Group
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice, this
* list of conditions and the following disclaimer.
*
* Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
*
* Neither the name of the HSQL Development Group nor the names of its
* contributors may be used to endorse or promote products derived from this
* software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL HSQL DEVELOPMENT GROUP, HSQLDB.ORG,
* OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
/**
* Collection of static methods for converting strings between different formats
* and to and from byte arrays.
*
*
* Includes some methods based on Hypersonic code as indicated.
*
* @author Thomas Mueller (Hypersonic SQL Group)
* @author Fred Toussi (fredt@users dot sourceforge.net)
* @version 1.9.0
* @since 1.7.2
*/
public class Main {
/**
* Returns the quoted version of the string using the quotechar argument.
* doublequote argument indicates whether each instance of quotechar inside
* the string is doubled.
*
* null string argument returns null. If the caller needs the literal
* "NULL" it should created it itself
*
* @param s Java string
* @param quoteChar character used for quoting
* @param extraQuote true if quoteChar itself should be repeated
* @return String
*/
public static String toQuotedString(String s, char quoteChar,
boolean extraQuote) {
if (s == null) {
return null;
}
int count = extraQuote ? count(s, quoteChar)
: 0;
int len = s.length();
char[] b = new char[2 + count + len];
int i = 0;
int j = 0;
b[j++] = quoteChar;
for (; i < len; i++) {
char c = s.charAt(i);
b[j++] = c;
if (extraQuote && c == quoteChar) {
b[j++] = c;
}
}
b[j] = quoteChar;
return new String(b);
}
/**
* Counts Character c in String s
*
* @param s Java string
* @param c character to count
* @return int count
*/
static int count(final String s, final char c) {
int pos = 0;
int count = 0;
if (s != null) {
while ((pos = s.indexOf(c, pos)) > -1) {
count++;
pos++;
}
}
return count;
}
}
Table for escape sequence character
ValueMeaning\bBackspace\fForm feed\nNew line\rCarriage return\tTab
public class MainClass{
public static void main(String[] arg){
System.out.println("\b");
System.out.println("\f");
System.out.println("\n");
System.out.println("\r");
System.out.println("\t");
}
}
\\: to specify a backslash character as a character literal or in a text string
public class MainClass {
public static void main(String[] arg) {
System.out.println("\\");
System.out.println("\\\\");
}
}
\ \\