Java 如何将某个字符放在某个字符串之前?
我想做的是把@字符放在域之前。我还试图弄清楚如何将域设置为最后4个字符(example.com)。我该怎么做呢?任何帮助都将不胜感激 我已经列出了我在这方面的工作 链接中的代码:Java 如何将某个字符放在某个字符串之前?,java,string,Java,String,我想做的是把@字符放在域之前。我还试图弄清楚如何将域设置为最后4个字符(example.com)。我该怎么做呢?任何帮助都将不胜感激 我已经列出了我在这方面的工作 链接中的代码: import java.util.Scanner; public class Username { public static void main(String[] args) { Scanner keyboard = new Scanner(System.in);
import java.util.Scanner;
public class Username {
public static void main(String[] args) {
Scanner keyboard = new Scanner(System.in);
System.out.println("Must be between 8 and 20 characters.");
System.out.println("Must contain at least one uppercase and lowercase letter.");
System.out.println("Must contain at least one digit. ");
System.out.println("Must contain a special character ] [ ? / < ~ # ! $ % ^ & * ( ) + = } | : ; , > { ");
System.out.println("Must contain @ before the domain");
System.out.println("The only acceptable domains are .com .edu .org .mil .gov .net");
System.out.println("\\n____Please enter your username to access the page. Follow the rules above.____ ");
String input = keyboard.nextLine();
while ((input.length() < 8) || (input.length() > 20))
{
System.out.println("Error! Your input is not valid.");
System.out.println("Please try again.");
keyboard.nextLine();
}
for (int i = 0; i <= input.length(); i++)
{
if(Character.isUpperCase(input.charAt(i)))
{
break;
}
else
{
if(i == input.length())
{
System.out.println("Error: Try again");
input = keyboard.nextLine();
}
}
}
for (int i = 0; i <= input.length(); i++)
{
if(Character.isLowerCase(input.charAt(i)))
{
break;
}
else
{
if(i == input.length())
{
System.out.println("Try again");
input = keyboard.nextLine();
}
}
}
char [] numbers= {\'0\',\'1\',\'2\',\'3\', \'4\',\'5\',\'6\',\'7\',\'8\',\'9\'};
char[] inputArray = input.toCharArray();
for (int i = 0; i < inputArray.length; i++)
{
for (int j = 0; j < numbers.length; j++)
{
if (inputArray[i]== numbers[j])
{
i=inputArray.length;
j=numbers.length;
}
else
{
if(i == inputArray.length-1 && j== numbers.length-1)
{
System.out.println("Try again");
input = keyboard.nextLine();
}
}
}
char [] SpecialCharacter = {\']\',\'[\',\'?\',\'/\',\'<\',\'~\',\'#\',\'.\',\'!\',\'$\',\'%\',\'^\',\'&\',\'*\',\'(\',\')\',\'+\',\'=\',\'}\',\'|\',\'>\',\'{\' };
char[] inputArray2 = input.toCharArray();
for (int k = 0; k < inputArray2.length; k++)
{
for (int l = 0; l < SpecialCharacter.length; l++)
{
if (inputArray2[k]== SpecialCharacter[l])
{
k=inputArray2.length;
l=SpecialCharacter.length;
}
else
{
if(k == inputArray2.length-1 && l == SpecialCharacter.length-1)
{
System.out.println("No...Try Again");
input = keyboard.nextLine();
}
}
}
String domain1 = ".com";
String domain2 = ".edu";
String domain3 = ".org";
String domain4 = ".mil";
String domain5 = ".gov";
String domain6 = ".net";
}
}
}
}
import java.util.Scanner;
公共类用户名{
公共静态void main(字符串[]args){
扫描仪键盘=新扫描仪(System.in);
System.out.println(“必须介于8到20个字符之间”);
System.out.println(“必须至少包含一个大写和小写字母”);
System.out.println(“必须至少包含一个数字”);
System.out.println(“必须包含特殊字符][?/<~#!$%^&*()+=}|:;,>{”);
System.out.println(“必须在域之前包含@”);
System.out.println(“唯一可接受的域名是.com.edu.org.mil.gov.net”);
System.out.println(“\\n\uuuuuuu请输入您的用户名以访问该页面。请遵循上述规则。”;
字符串输入=键盘.nextLine();
而((input.length()<8)| |(input.length()>20))
{
System.out.println(“错误!您的输入无效。”);
System.out.println(“请再试一次”);
keyboard.nextLine();
}
对于(inti=0;i我将把它放在这里
在需要的地方插入部分代码
import java.util.Scanner;
public class Username {
public static void main(String[] args) {
Scanner keyboard = new Scanner(System.in);
System.out.println("Must be between 8 and 20 characters.");
System.out.println("Must contain at least one uppercase and lowercase letter.");
System.out.println("Must contain at least one digit. ");
System.out.println("Must contain a special character ] [ ? / < ~ # ! $ % ^ & * ( ) + = } | : ; , > { ");
System.out.println("Must contain @ before the domain");
System.out.println("The only acceptable domains are .com .edu .org .mil .gov .net");
System.out.println("\\n____Please enter your username to access the page. Follow the rules above.____ ");
boolean isOK = false;
String input=new String();
while(!isOK){
input=keyboard.nextLine();
if(input.length() < 20 || input.length() > 8) //length check
{
isOK=true;
}
else
{
isOK=false;
continue;
}
if(input.contains('@')) //check domain
{
isOK=true;
}
else
{
isOK=false;
System.out.println("No @ before domain!");
continue;
}
String[] tokens = input.split("@");
String domain=tokens[1];
String username=tokens[0];
//check if contains digit
...
//check uppercase and lowercase in username
...
//check special character in username
...
//split domain
tokens = domain.split(".");
String domainEnding = tokens[1];
//check if the input domain endings are allowed
...
}
}
}
import java.util.Scanner;
公共类用户名{
公共静态void main(字符串[]args){
扫描仪键盘=新扫描仪(System.in);
System.out.println(“必须介于8到20个字符之间”);
System.out.println(“必须至少包含一个大写和小写字母”);
System.out.println(“必须至少包含一个数字”);
System.out.println(“必须包含特殊字符][?/<~#!$%^&*()+=}|:;,>{”);
System.out.println(“必须在域之前包含@”);
System.out.println(“唯一可接受的域名是.com.edu.org.mil.gov.net”);
System.out.println(“\\n\uuuuuuu请输入您的用户名以访问该页面。请遵循上述规则。”;
布尔值isOK=false;
字符串输入=新字符串();
而(!isOK){
输入=键盘.nextLine();
if(input.length()<20 | | input.length()>8)//长度检查
{
isOK=真;
}
其他的
{
isOK=假;
继续;
}
if(input.contains('@')//检查域
{
isOK=真;
}
其他的
{
isOK=假;
System.out.println(“域前无@!”);
继续;
}
String[]tokens=input.split(“@”);
字符串域=令牌[1];
字符串用户名=令牌[0];
//检查是否包含数字
...
//检查用户名中的大小写
...
//检查用户名中的特殊字符
...
//分裂域
令牌=domain.split(“.”);
String domainEnding=tokens[1];
//检查是否允许输入域结尾
...
}
}
}
因此,如果输入部分出错,只需使用isOK=false;
继续;
顺便问一下:为什么在特殊字符和数字数组中使用\'
?
您可以只使用'1'
,'@'
等。如果您只需要验证用户是否输入了有效的电子邮件,那么您应该使用定期体验,因为这样做更简单、更快速
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class EmailValidator {
private Pattern pattern;
private Matcher matcher;
private static final String EMAIL_PATTERN =
"^(?=.*[0-9]*[a-z]*[A-Z])(?=.*[a-zA-Z])([a-zA-Z0-9]{8,20}+@[A-Za-z0-9]+.(com|org|edu|mil|net))$";
public EmailValidator() {
pattern = Pattern.compile(EMAIL_PATTERN);
}
/**
* Validate hex with regular expression
*
* @param hex
* hex for validation
* @return true valid hex, false invalid hex
*/
public boolean validate(final String hex) {
matcher = pattern.matcher(hex);
return matcher.matches();
}
}
希望这对您有所帮助。=)请直接在问题中添加代码,而不仅仅是链接到pastebin,但首先要合理设置格式。此外,pastebin超过130行,我希望您能够在20行内轻松演示问题,这将使帮助您变得更容易。亲爱的上帝,这是什么代码!?首先,您知道当你输入新的值时,你正在烧毁你迄今为止所做的所有te桥…我的建议是做一个布尔标记isGood
,然后做一个while循环,在这个循环中,你首先读取键盘,然后检查每个先决条件,一旦一个不合适,你就把isGood
标记设为false并使用ccontinue
…我不确定此正则表达式是否检查长度是否在8到20之间,电子邮件是否包含特殊字符或至少一个数字…为此,您可以执行此字符串检查[]=emailString.split(“@”);--if(检查[0].length()20)System.out.print(“无效”);else//your code你只需要在上面的代码中添加这两行,你就完成了=),如果它与模式匹配,你就可以跳过它。接受这个正则表达式可以做你想做的一切。是的,但是你的正则表达式仍然不检查他是否使用了所有:大写、小写、数字和特殊字符…(?=.[0-9]*[a-z]*[a-z])(?=..[a-zA-z])([a-zA-Z0-9]{8,20}+@[A-Za-z0-9]+(com | org | edu | mil | net))给你,亲爱的..它正在运行,正在验证