我有一个数据库查询,它返回列中的一些字符串数据。我想根据数据中是否存在特定字符串来修剪此字段?
如果字符串包含逗号“,”,我希望返回第一个逗号的LEFT 如果该字符串包含一个超级“ - ”,我想返回第一次宣传的左边 如果字符串不包含,我想返回字符串的前14个字符?
此刻我正朝着这个方向前进:
StringHandling.LEFT(row1.DESCRIPTION,StringHandling.INDEX(row1.DESCRIPTION,"-"))
如何包含一些逻辑来检查逗号或缺少逗号并在表达式中返回相应的子字符串?
非常感谢!
答案 0 :(得分: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()));
}
当字符串长度少于14个字符时,Math.min()
将处理。
答案 1 :(得分: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;
}
答案 2 :(得分: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