在java

时间:2017-09-18 19:52:24

标签: java string formatting user-input

*编辑2,"未声明的变量"以下是我的教科书提供的示例。我可能在使用未声明的变量时使用了错误的术语。

  • String fName =" Harry";
  • String lName =" Morgan";
  • String name = fName + lName;
  • 会产生字符串" HarryMorgan"
  • 如果您想要用空格分隔的名字和姓氏怎么办?没问题:
  • String name = fName +" " + lName;
  • 此语句连接三个字符串:
  • fName,字符串文字" "和lName。
  • 结果是" Harry Morgan"

提供的引文是一个指南。请在使用前检查每个引文的准确性。

*编辑,问题是:如何将字符插入未声明的字符串?

示例:

Input: X839WS21R4E877
Display: X-839 WS21 R4-E87 (7)

Input: x83rws21b3e87a
Display: X-83R WS21 B3-E87 (A)

我正在从用户那里获取14个字符的输入。我需要格式化空格和" - "进入输入。此外,所有的信件都需要大写,尽管我已经照顾过了。

以下代码就是我所拥有的。

System.out.println("Please enter your 14 character code.");
    String name = input.nextLine();

    if (name.length()>14) {//code thanks to namlik from stackoverflow 
        String cutName = name.substring(0, 14).toUpperCase();
        name = cutName;
    }

    System.out.print(name);

这是我觉得可能有用的另一篇文章,但我不了解如何将其实现到我的代码中,或者它是否可行。 Basic way to insert character into string.

以下链接是另一个类似的问题。 Python vs of Question

这个链接是我尝试搜索时出现的,但我没有使用int来字符串所以我不相信它是相关的。 Example of search results

我相信我的场景会让其他人能够将其他类型的角色插入到未知的字符串中。我意识到使用/你可以插入特殊字符。但是到目前为止我发现的所有内容都使用了假设您使用的是声明的变量。

我相信我需要插入我想要空格的字符和" - "在设定点使用.substring(x,x)方法,但是我不确定如何解决这个问题,只是搞乱我的14个字符的限制。

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

如果我正确理解您的输入输出示例,那么最好的方法是使用正则表达式组和String::replaceAll,如下所示:

String[] strings = {"X839WS21R4E877", "x83rws21b3e87a"};
for(String str : strings){
    str = str.toUpperCase();// to convert the string to UpperCase
    str = str.replaceAll("([A-Z0-9])([A-Z0-9]{3})([A-Z0-9]{4})([A-Z0-9]{2})([A-Z0-9]{3})([A-Z0-9])", 
            "$1-$2 $3 $4-$5 ($6)");

    System.out.println(str);
}

<强>输出

X-839 WS21 R4-E87 (7)
X-83R WS21 B3-E87 (A)

细节

([A-Z0-9])([A-Z0-9]{3})([A-Z0-9]{4})([A-Z0-9]{2})([A-Z0-9]{3})([A-Z0-9])

您必须将您的输入信息分配到上一组regew中的组,共有6组:

  • ([A-Z0-9]) groupe 1匹配首字母或数字
  • ([A-Z0-9]{3}) groupe 3匹配3个字母或数字
  • ([A-Z0-9]{4}) groupe 4匹配4个字母或数字
  • ([A-Z0-9]{2}) groupe 2匹配2个字母或数字
  • ([A-Z0-9]{3}) groupe 3匹配3个字母或数字
  • ([A-Z0-9]) groupe 6匹配最后一个字符