Java tutorial
//package com.java2s; /* * 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. */ public class Main { /** * <p> * Gets <code>n</code> characters from the middle of a String. * </p> * <p/> * <p> * If <code>n</code> characters are not available, the remainder of the String will be returned without an * exception. If the String is <code>null</code>, <code>null</code> will be returned. * </p> * * @param str the String to get the characters from * @param pos the position to start from * @param len the length of the required String * @return the leftmost characters * @throws IndexOutOfBoundsException if pos is out of bounds * @throws IllegalArgumentException if len is less than zero */ public static String mid(String str, int pos, int len) { if ((pos < 0) || ((str != null) && (pos > str.length()))) { throw new StringIndexOutOfBoundsException("String index " + pos + " is out of bounds"); } if (len < 0) { throw new IllegalArgumentException("Requested String length " + len + " is less than zero"); } if (str == null) { return null; } if (str.length() <= (pos + len)) { return str.substring(pos); } else { return str.substring(pos, pos + len); } } /** * <p> * Gets a substring from the specified string avoiding exceptions. * </p> * <p/> * <p> * A negative start position can be used to start <code>n</code> characters from the end of the String. * </p> * * @param str the String to get the substring from * @param start the position to start from, negative means count back from the end of the String by this many * characters * @return substring from start position */ public static String substring(String str, int start) { if (str == null) { return null; } // handle negatives, which means last n characters if (start < 0) { start = str.length() + start; // remember start is negative } if (start < 0) { start = 0; } if (start > str.length()) { return ""; } return str.substring(start); } /** * <p> * Gets a substring from the specified String avoiding exceptions. * </p> * <p/> * <p> * A negative start position can be used to start/end <code>n</code> characters from the end of the String. * </p> * * @param str the String to get the substring from * @param start the position to start from, negative means count back from the end of the string by this many * characters * @param end the position to end at (exclusive), negative means count back from the end of the String by this many * characters * @return substring from start position to end positon */ public static String substring(String str, int start, int end) { if (str == null) { return null; } // handle negatives if (end < 0) { end = str.length() + end; // remember end is negative } if (start < 0) { start = str.length() + start; // remember start is negative } // check length next if (end > str.length()) { // check this works. end = str.length(); } // if start is greater than end, return "" if (start > end) { return ""; } if (start < 0) { start = 0; } if (end < 0) { end = 0; } return str.substring(start, end); } }