2011-07-08 23 views
0

私は列にいくつかの文字列データを返すデータベースクエリを持っています。私は特定の文字列がデータに存在するかどうかに基づいてこのフィールドをトリミングしたいと思いますか?文字列値に基づいてJava文字列をトリミングしますか?

文字列にカンマが含まれている場合は、「」、私はその最初のカンマの左を返すように探しています 文字列にハイフンが含まれている場合は 『 - 』、私は文字列の場合は、その最初のハイフン のLEFTを返したいですどちらも含まれていない、私は文字列の最初の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処理を含めることができますか?文字列がnullで返された場合、 – TheTinMan

+0

はい、-1を差し引いて "。"を変更します。 " - " ...しかし、私はヌルポインタの例外を今窒息しています。 – 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

コンパクトだが読みにくい –

関連する問題