Обрезать строку Java на основе строковых значений? - PullRequest
0 голосов
/ 08 июля 2011

У меня есть запрос к базе данных, который возвращает некоторые строковые данные в столбце.Я хотел бы обрезать это поле в зависимости от того, существует ли конкретная строка в данных?

Если строка содержит запятую ",", я хочу вернуть ВЛЕВО этой первой запятой, если строка содержитhypen "-", я хотел бы вернуть LEFT этого первого hypen. Если строка не содержит ни того, ни другого, я хотел бы вернуть первые 14 символов строки?

В данный момент я направляюсь в этом направлении:

StringHandling.LEFT(row1.DESCRIPTION,StringHandling.INDEX(row1.DESCRIPTION,"-"))

Как мне включить логику для проверки запятой или ее отсутствия и вернуть соответствующую подстроку в моем выражении ??

Большое спасибо!

Ответы [ 3 ]

1 голос
/ 08 июля 2011

Другой вариант (я украл технику Богемяна Math.min () ;-)):

 public String dbString(String s){
        String[] parts = s.split("(,|-)");

        String trimmed = parts.length > 1? parts[0] : parts[0].substring(0, Math.min(14,  parts[0].length());

        return trimmed;
    }
1 голос
/ 08 июля 2011

Как то так?(Отредактировано для обработки null)

public static String specialTrim(String input) {
    if (input == null)
        return null; // or return "", or whatever else you want
    if (input.contains(","))
        return input.substring(0, input.indexOf(","));
    if (input.contains("."))
        return input.substring(0, input.indexOf("."));
    return input.substring(0, Math.min(14, input.length()));
}

Math.min() - для обработки, если длина строки меньше 14 символов.

0 голосов
/ 08 июля 2011

Проверьте API для String.contains, String.indexOf и String.substring.

String theString = <wherever it comes from>;
// if it contains a ,
if (theString.contains(",")) {
    // return all elements one position to the left
    return theString.substring(0, theString.indexOf(",") - 1);
} else // and repeat
...