4

我是 java 新手(以前只使用 sql),我正在尝试为我的字符串变量设置长度限制。基本上我有一个用户名字段,只能是 6 个字符长。

我正在尝试以下操作:

private String username (6);

我假设这不是正确的格式。有谁知道我如何在java中正确地做到这一点?

4

7 回答 7

4

其他一些答案声称“没有办法通过内置功能将java中的字符串限制为某个有限数量”,并建议自己滚动。但是,Java EE 验证 API 仅用于此目的。一个例子:

import javax.validation.constraints.Size;

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

有关如何使用 Validation API 的更多信息,例如,请参阅此线程。Hibernate 验证器是参考实现(用法)。

简而言之,当将对象注释为@Valid 时,将强制执行在注释中完成的验证。

于 2013-04-01T13:24:44.447 回答
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"
于 2013-03-31T07:44:33.807 回答
2

无法通过内置功能将 Java 中的字符串限制为某个有限数量。字符串是不可变的,并采用您在其构造函数中提供的值。您将需要手动编写代码来执行此操作。

使用该length()函数确定 String 的长度,并且不允许长度大于 6。

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

您拥有的选项之一是抛出异常,然后在其他地方处理它。或者,您可以在遇到问题后立即向用户显示警报。

于 2013-03-31T08:31:29.137 回答
1

您可以尝试这样的事情:从用户那里获取输入,然后使用以下函数验证该字符串。

String output ="";
public boolean set(String str, int limit){
      if(str.length() <= limit){
            output= str;
            return true;
      }
      else
        return false;
 }
于 2013-03-31T07:44:51.340 回答
0

在这种情况下annotation,如果您当然知道这是什么,那么机制可能很有用。

您可以创建自己的注释,例如:

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

并像这样使用它:

@MaxLength(6)
private String username;

然后你必须在一个特殊的后处理器中对这些对象进行后处理,你必须手动创建它。

于 2013-03-31T08:12:53.943 回答
0

SubString() 不适合这个。如果输入字符串的长度小于限制StringIndexOutOfBoundsException将被抛出。我认为您可以为此使用StringBuilder 。

StringBuilder buider = new StringBuilder(username);
builder.setLength(6);
String restName = builder.toString().trim();
于 2019-01-30T13:49:46.157 回答
-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
                ...........
            }    
于 2016-07-19T00:08:22.637 回答