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

com.azure.cosmos.implementation.apachecommons.text.WordUtils Maven / Gradle / Ivy

Go to download

This Package contains Microsoft Azure Cosmos SDK (with Reactive Extension Reactor support) for Azure Cosmos DB SQL API

There is a newer version: 4.60.0
Show newest version
/*
 * 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.
 */

/*
 * Portions Copyright (c) Microsoft Corporation
 */

package com.azure.cosmos.implementation.apachecommons.text;

import com.azure.cosmos.implementation.apachecommons.lang.StringUtils;

import java.util.HashSet;
import java.util.Set;

public class WordUtils {
    /**
     * 

Converts all the whitespace separated words in a String into capitalized words, * that is each word is made up of a titlecase character and then a series of * lowercase characters.

* *

Whitespace is defined by {@link Character#isWhitespace(char)}. * A null input String returns null. * Capitalization uses the Unicode title case, normally equivalent to * upper case.

* *
     * WordUtils.capitalizeFully(null)        = null
     * WordUtils.capitalizeFully("")          = ""
     * WordUtils.capitalizeFully("i am FINE") = "I Am Fine"
     * 
* * @param str the String to capitalize, may be null * @return capitalized String, null if null String input */ public static String capitalizeFully(final String str) { return capitalizeFully(str, null); } /** *

Converts all the delimiter separated words in a String into capitalized words, * that is each word is made up of a titlecase character and then a series of * lowercase characters.

* *

The delimiters represent a set of characters understood to separate words. * The first string character and the first non-delimiter character after a * delimiter will be capitalized.

* *

A null input String returns null. * Capitalization uses the Unicode title case, normally equivalent to * upper case.

* *
     * WordUtils.capitalizeFully(null, *)            = null
     * WordUtils.capitalizeFully("", *)              = ""
     * WordUtils.capitalizeFully(*, null)            = *
     * WordUtils.capitalizeFully(*, new char[0])     = *
     * WordUtils.capitalizeFully("i aM.fine", {'.'}) = "I am.Fine"
     * 
* * @param str the String to capitalize, may be null * @param delimiters set of characters to determine capitalization, null means whitespace * @return capitalized String, null if null String input */ public static String capitalizeFully(String str, final char... delimiters) { if (StringUtils.isEmpty(str)) { return str; } str = str.toLowerCase(); return capitalize(str, delimiters); } /** *

Capitalizes all the delimiter separated words in a String. * Only the first character of each word is changed. To convert the * rest of each word to lowercase at the same time, * use {@link #capitalizeFully(String, char[])}.

* *

The delimiters represent a set of characters understood to separate words. * The first string character and the first non-delimiter character after a * delimiter will be capitalized.

* *

A null input String returns null. * Capitalization uses the Unicode title case, normally equivalent to * upper case.

* *
     * WordUtils.capitalize(null, *)            = null
     * WordUtils.capitalize("", *)              = ""
     * WordUtils.capitalize(*, new char[0])     = *
     * WordUtils.capitalize("i am fine", null)  = "I Am Fine"
     * WordUtils.capitalize("i aM.fine", {'.'}) = "I aM.Fine"
     * WordUtils.capitalize("i am fine", new char[]{}) = "I am fine"
     * 
* * @param str the String to capitalize, may be null * @param delimiters set of characters to determine capitalization, null means whitespace * @return capitalized String, null if null String input * @see #capitalizeFully(String) */ public static String capitalize(final String str, final char... delimiters) { if (StringUtils.isEmpty(str)) { return str; } final Set delimiterSet = generateDelimiterSet(delimiters); final int strLen = str.length(); final int[] newCodePoints = new int[strLen]; int outOffset = 0; boolean capitalizeNext = true; for (int index = 0; index < strLen;) { final int codePoint = str.codePointAt(index); if (delimiterSet.contains(codePoint)) { capitalizeNext = true; newCodePoints[outOffset++] = codePoint; index += Character.charCount(codePoint); } else if (capitalizeNext) { final int titleCaseCodePoint = Character.toTitleCase(codePoint); newCodePoints[outOffset++] = titleCaseCodePoint; index += Character.charCount(titleCaseCodePoint); capitalizeNext = false; } else { newCodePoints[outOffset++] = codePoint; index += Character.charCount(codePoint); } } return new String(newCodePoints, 0, outOffset); } /** *

* Converts an array of delimiters to a hash set of code points. Code point of space(32) is added as the default * value if delimiters is null. The generated hash set provides O(1) lookup time. *

* * @param delimiters set of characters to determine capitalization, null means whitespace * @return Set */ private static Set generateDelimiterSet(final char[] delimiters) { final Set delimiterHashSet = new HashSet<>(); if (delimiters == null || delimiters.length == 0) { if (delimiters == null) { delimiterHashSet.add(Character.codePointAt(new char[] {' '}, 0)); } return delimiterHashSet; } for (int index = 0; index < delimiters.length; index++) { delimiterHashSet.add(Character.codePointAt(delimiters, index)); } return delimiterHashSet; } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy