0

我有一个数据库查询,它在一列中返回一些字符串数据。我想根据数据中是否存在特定字符串来修剪此字段?

如果字符串包含逗号“,”,我希望返回第一个逗号的 LEFT 如果字符串包含连字符“-”,我想返回第一个连字符的 LEFT 如果字符串都不包含,我想返回字符串的前 14 个字符?

我目前正朝着这个方向前进:

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

如何包含一些逻辑来检查逗号或缺少逗号并在我的表达式中返回适当的子字符串?

非常感谢!

4

3 回答 3

1

另一种选择(我偷了 Bohemian 的 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;
    }
于 2011-07-08T11:24:13.967 回答
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 个字符时处理。

于 2011-07-08T10:13:46.953 回答
0

检查 String.contains、String.indexOf 和 String.substring 的 API。

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
于 2011-07-08T10:14:09.810 回答