2013-03-31 68 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