2013-03-31 69 views
4

我是新來的java(以前只與SQL一起工作),我試圖爲我的字符串變量設置長度限制。基本上我有一個只能有6個字符長的用戶名字段。Java字符串限制

我嘗試以下操作:

private String username (6); 

我假定這是不正確的格式。有誰知道我可以用java正確做到這一點?

回答

2

你的建議是不正確的做你想做的事。嘗試使用:

private int stringLimit = 6; 
// Take input from user 
private String username = inputString.substring(0,stringLimit); 

例如:

inputString = "joelspolsky"; 
private String username = inputString.substring(0,stringLimit); 
// username is "joelsp" 
+1

的長度這將炸燬如果字符串小於stringLimit短。 – user1944491

1

你可以嘗試這樣的soemthing:以來自用戶的輸入,然後通過下面的函數驗證字符串。

String output =""; 
public boolean set(String str, int limit){ 
     if(str.length() <= limit){ 
      output= str; 
      return true; 
     } 
     else 
     return false; 
} 
0

在這種情況下annotation機制可能是有用的,如果當然,你知道這是什麼。

您可以創建自己的註釋,是這樣的:

@Target(ElementType.FIELD) 
@Retention(RetentionPolicy.RUNTIME) 
public @interface MaxLength { 
    int value(); 
} 

而且使用它像:

@MaxLength(6) 
private String username; 

然後,你必須進行後處理的專用處理器後,這樣的對象,你必須手動創建。

1

沒有方法在Java限制字符串通過內置特性一定有限數。字符串是不可變的,並採用您在其構造函數中提供的值。您將需要手動編寫代碼來執行此操作。

使用length()函數來確定字符串的長度,並且不允許長度大於6

if(username.length() > 6) 
{ 
    throw new RuntimeException("User name too long"); 
} 

一個你必須是拋出一個異常,然後處理一下其他地方的選項越大。或者,您可以在遇到問題後立即向用戶顯示警報。

4

其他一些答案,聲稱「有沒有辦法在Java限制字符串,通過內置的功能一定有限數量的」,並建議那些滾動自己。但是,Java EE驗證API僅用於此目的。舉例:

import javax.validation.constraints.Size; 

public class Person { 
     @Size(max = 6) 
     private String username; 
} 

有關如何使用驗證API的更多信息,請參閱this threadHibernate validator是參考實現(usage)。

總之,註釋對象作爲@Valid時,在註釋進行驗證將被強制執行。

-2

例如切割URL

if (getURLitem.length() >= 15) { 
       int stringLimit = 15; 
       final String smallURL = getURLitem.substring(0, stringLimit); 
       //show short string in textview... 

       TextView urlLink = (TextView) findViewById(R.id.url_link); 
       urlLink.setText(smallURL); 

       // Set On click listener and open URL below 
       ........... 
      } else { 
       //show full string in textview... 
       TextView urlLink = (TextView) findViewById(R.id.url_link); 
       urlLink.setText(getURLitem); 

       // Set On click listener and open URL below 
       ........... 
      }  
+0

我假設'getString'是一個變量名。讓我告訴你,這是一個非常糟糕的變量名稱,因爲它們的名字不應該以動詞開頭,它聽起來像是一種方法,可能會讓人困惑。請不要只發布代碼,試着解釋你提供的解決方案是什麼,請記住你在這裏幫助其他人:) –

+0

請檢查我已經更新上面,我的錯誤之前.. – ivan