2011-07-08 4 views
0

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

Если строка содержит запятую «» я ищу, чтобы вернуться ЛЕВЫЙ этой первой запятой Если строка содержит hypen „-“, я хотел бы вернуться ЛЕВЫЙ этой первой hypen Если строка не содержит ни одного, я хотел бы вернуть первые 14 символов строки?

я возглавлял в этом направлении на данный момент:

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

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

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

+1

Вы должны повторно проверить свой дизайн базы данных ..........: - | –

ответ

1

Что-то вроде этого? (Под редакцией для обработки 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

Практически просто удалите '-1'. –

+0

Чешский, ваш код работает ОТЛИЧНО! Как вы можете видеть, я все еще нахожу свой путь с программированием! Я полностью понимаю ваш код, но не хватает необходимых знаний о том, как он структурирован, чтобы написать его сам! Я знаю, что это проблема, когда вопрос начинает вилка, но могу ли я добавить твист? Как включить null-обработку? Если строка была нулевой, она возвращалась как таковая? – TheTinMan

+0

да, минус '-1' и изменение "." to "-" ... но я задыхаюсь от исключений Null pointer now..doh! – TheTinMan

0

Проверьте 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 
1

Другой вариант (я украл 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; 
    } 
+0

компактный, но трудно читаемый –

Смежные вопросы