2017-01-13 4 views
1

私はかなりJavaに慣れています。codeforces.comの文字列からすべての母音を削除し、すべての子音の前にドット(。)を追加することについての質問を見つけました。私は既にすべての母音を削除する方法を見つけましたが、子音の前にドットを追加する方法はまだありません。私を助けてください:)「。」を追加する方法文字列のすべての子音の前に?

public class Stringprob{ 
    public static void main(String[] args){ 
     Scanner s = new Scanner(System.in); 
     String word; 
     word = s.next(); 
     word = word.replaceAll("[aeiouyAEIOUY]",""); 
     //the problem says that 'Y' is a vowel too 
     word = insert("[^aeiouyAEIOUY]", "."); 
     //here is where I lost it all 
     System.out.println(word); 
     } 
} 

ありがとう申し訳ありませんが、コードは、私は、Javaには本当に新しいよ、本当に厄介です。

出典:String Task - codeforces.com

+0

コードを投稿してください。サンプルの入力と出力は何か不足しています。 – luk2302

+0

@ luk2302申し訳ありませんが、オーバーフローをスタックするのは初めてです。コードを段落に似ていないように実際のコードのように追加する方法はありますか? –

+0

を4つのスペースでインデントします。 – luk2302

答えて

3

あなたはすべての文字をキャプチャし、子音だけがこのようにステップ1を適用した後に残される全ての母音

2. [aeiouyYAEIOU])を取り外し)、交換

1としてcapture group()$1を使用することができます([a-zA-Z])を使用して、.$1に置き換えます。ここで、.はドットで、$1文字自体

注:([^aeiouyAEIOUY])が母音以外のものと一致すると、@#$%^&*12346のような特殊文字と数字にも一致することができるという意味で、これだけが文字をキャプチャするため、パフォーマンス面で効率が向上します。

word = word .replaceAll("[aeiouyYAEIOU]",""); 
word = word.replaceAll("([a-zA-Z])", ".$1"); 

それとも

word = word .replaceAll("[aeiouyYAEIOU]",""); 
word = word.replaceAll("([^aeiouyAEIOUY])", ".$1"); 

だけでなく、特殊文字や数字と .と一致し、追加する

([^aeiouyAEIOUY]):すべての子音をキャプチャし、$1

[^aeiouyAEIOUY]キャプチャ子音を表し.$1として交換を使用します。^その意味ではありません。[]

String s = "abcdefghijklmnopqrstuvwxyzAEIOUY"; 

    // replace all vowels 
    s = s.replaceAll("[aeiouyYAEIOU]",""); 
    s = s.replaceAll("([a-zA-z])", ".$1"); 
    System.out.println(s); 

出力:

.b.c.d.f.g.h.j.k.l.m.n.p.q.r.s.t.v.w.x.z 

ちょうどあなたの情報のために、あなたも、あなたが最初replaceAll関数の出力に二replaceAll関数を適用することができ、1つのラインでこれを行うことができます

s = s.replaceAll("[aeiouyYAEIOU]","").replaceAll("([^aeiouyAEIOU‌​Y])", ".$1"); 
+0

それは実際には、私はまだ$ 1が子音を表す方法を取得しません とにかく答えてくれてありがとう:) –

+0

@Franklin G. '$ 1'はすべての子音を捕まえてそれを覚えています'^aeiouyAEIOUY]) '()()()' = '$ 1 $ 2 $ 3'のように、グループに与えられたインデックスに似ています –

0

この例では、追加します ""文字列の子音の前に

public void test() { 
    StringBuffer result = new StringBuffer(""); 
    String text = "tour"; 
    StringBuffer b = new StringBuffer(text); 
    for(int i = 0; i < b.length(); i++) { 
     String substring = b.substring(i, i+1); 
     if(isConsanantCharacter(substring)) { 
      result.append("." + substring); 
     } else { 
      result.append(substring); 
     } 
    } 
} 

public boolean isConsanantCharacter(String character){ 
    String cons = "bcdfghjklmnpqrstvwxyzBCDFGHJKLMNPQRSTVWXYZ"; 
    return cons.contains(character); 
} 
0

ここでは、コードです:

public static void main(String[] args) { 

    String s = "The Boy is a good boy"; 
    StringBuilder newString = new StringBuilder(); 

    for (int i = 0; i < s.length(); i++) { 
     if (!(s.charAt(i) == 'a' || s.charAt(i) == 'e' || s.charAt(i) == 'i' || s.charAt(i) == 'o' 
       || s.charAt(i) == 'u' || s.charAt(i) == 'A' || s.charAt(i) == 'E' || s.charAt(i) == 'I' 
       || s.charAt(i) == 'U' || s.charAt(i) == 'O' || s.charAt(i) == ' ')) { 
      newString.append('.'); 
     } 
     newString.append(s.charAt(i)); 
    } 
    System.out.println(newString); 
} 

出力は次のとおりです。

.T.he .Bo.y i.s a .goo.d .bo.y 
0

エン、uは母音のすべてを削除することができれば、それは文字列が子音だけで構成されて意味が今。 擬似コード:

char[] chars=word.toCharArray; 
String result; 
for(int i;i<chars.length;i++){ 
    result=result+"."+chars[i]; 
} 
0
public class Vowels { 

    public static boolean isVowel(char input) { 
     return (input == 'a' || input == 'e' || input == 'i' || input == 'o' 
       || input == 'u' || input == 'A' || input == 'E' || input == 'I' 
       || input == 'O' || input == 'U'); 
    } 

    public static String addDots(char input) { 

     if (!isVowel(input)) { 
      return ".".concat("" + input); 
     } else { 
      return ""; 
     } 
    } 

    public static void main(String[] args) { 
     String inputString = "Hello"; 
     String newString = ""; 
     for (int i = 0; i < inputString.length(); i++) {   
      newString += addDots(inputString.charAt(i)); 
     } 
     System.out.println("Output " + newString); 

    } 

} 
関連する問題