2017-09-18 10 views
0

*編集2、 "宣言されていない変数"次に示すのは、教科書の例です。私は、宣言されていない変数を言い表す際に誤った用語を使用したかもしれませんユーザーの書式設定Javaの特定の場所に特定の文字を入力

  • 文字列fName = "Harry";
  • 文字列lName = "Morgan";
  • 文字列名= fName + lName;
  • 文字列「HarryMorgan」
  • スペースで区切られた姓と名字を使用する場合はどうすればよいですか?問題ありません:
  • 文字列名= fName + "" + lName;
  • この文は、
  • fName、文字列リテラル ""、およびlNameの3つの文字列を連結します。
  • 結果が提供引用がガイドラインである「ハリー・モーガン」

です。使用する前に各引用の正確性を確認してください。

*編集:質問:宣言されていない文字列に文字を挿入するにはどうすればよいですか?

例:

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文字。

ご協力いただきありがとうございます。私が正しく入力出力例を理解していれば

+0

我々は場所を確認する例入力と出力文字列のカップルを得ることができますあなたは文字を追加/削除したいですか? –

+0

申し訳ありませんが、正確にあなたの質問は何ですか? – Pshemo

+0

「宣言されていない文字列」とはどういう意味ですか? – Pshemo

答えて

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]) GROUPE 1試合最初の文字や数字
  • ([A-Z0-9]{3}) GROUPE 3試合:あなたはpreviouse内のグループにあなたの入力をdevideする必要が

    詳細

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

    は、6グループがありますregew 3文字または数字

  • ([A-Z0-9]{4})グループ4は4文字または数字と一致します
  • ([A-Z0-9]{2}) GROUPE 2試合2つの文字や数字
  • ([A-Z0-9]{3}) GROUPE 3試合3つの文字や数字
  • ([A-Z0-9]) GROUPE 6つの試合の最後の文字
+0

私は先生が私の中を歩くのを助けることができると確信していますが、このすべての仕組みを正確に理解できません。しかし、私はスキャナからユーザからの入力を受けています。だから私は入力がコードを書くときに何であるか知りません。あなたを明確にすることを願っています。 – Everette

+0

@Everetteあなたは 'String [] strings = {" X839WS21R4E877 "、" x83rws21b3e87a "};をユーザーの入力と置き換えることができます。この解決策は、グローバルロジックを理解するためだけです。 –

+0

@Everetteあなたのケースでは、 (name.length()> 14){ 文字列cutName = name.substring(0、14).toUpperCase(); ([A-Z0-9] {3})([A-Z0-9] {4})([A-Z0-9] {0} 2)}([A-Z0-9] {3})([A-Z0-9]) "、 " $ 1- $ 2 $ 3 $ 4- $ 5($ 6) "); } 'これが助けになるでしょう –

関連する問題