2017-09-19 2 views
0

任意の長さの部分文字列を置き換える必要があります。たとえば、2つのスペースの間。任意の長さの部分文字列を置換する

String str = "Insert random message here"; 
// Manipulation 
System.out.println(str); 

// Outputs: Insert a message here 

IがStringクラスのメソッドで検索しましたが、私は便利なものを発見していません。

+0

。異なる言語には、これに対するさまざまな解決策があります。 – theGleep

+0

置き換えられるテキストを特定するための実際の基準は何ですか?あなたのサンプルテキストには、置き換えられるテキストを囲む3つのスペースがあります。 –

+0

@ theGleep:おっと! Java。 (私が言うことができる方法はありますか?しかし、ここに?) –

答えて

0

最も直接的な解決策は、結果ストリング呼び出しのペアを使用して連結することである(それは...私の悪い英語のためかもしれません):

String random = "random" 
String str = "Insert random message here"; 

int nStart = str.indexOf(random); 
int nEnd = nStart + random.length; 

str = str.substr(0,nStart) + str.substr(nEnd); 
System.out.println(str); 

// Outputs: Insert a message here 
私の数学がひどいです
  • ノートを、その数字はおそらく1つか2つだけ離れているでしょう!

  • 編集追加する代わりに、「マジックナンバー」

編集の変数を使用する:私はOPと同じ言語を使用していないかもしれないが、うまくいけばそれが理解されるのに十分近いです。

+0

任意の長さ*が意味するように、OPはコード内で6と13の数字をどのように取得しますか? –

+0

私のコードを改訂しました。 – theGleep

+0

しかし、「ランダム」が香りの入力に存在しない場合はどうですか?私がランダムな香りを持っていて、ただ2つのスペースの間で1つを選びたいのであればどうですか?この解決策は、単語「ランダム」を含める必要があることを暗示していませんか? –

1

System.out.printlnは、これがJavaであると感じています。 オブジェクトのreplaceAll関数を使用して、文字列ブロック/一致正規表現を別の指定文字列に置き換えることができます。

String str = "I am foo"; 
str.replaceAll("foo", "blah"); 
System.out.println(str); 

上記のコードでは「私は愚かです」と表示されるはずです。

+0

はい!しかし、もしも「foo」のないもう一つの香りがあれば? –

+0

これは、何が期待できるか、つまり何もしなくてはなりません。それは基本的にパターンをmatvhesし、見つかった場合、それを与えられた文字列で置き換えます。 –

0

あなたは、このように二つの空間の間に最初の単語と一致する意味、この正規表現\s(.*?)\sでreplaceFirstというを使用することができます:あなたが使用しているどのような言語

String str = "Insert random message here"; 
str = str.replaceFirst("\\s(.*?)\\s", " a "); 
System.out.println(str); 

出力

Insert a message here 
+0

Intresting!今私たちはどこかに行ってきています... 私は単語を変更したいですか?三番? n:th? –

+0

@randycostanzaこの場合、splitを使ってn番目の単語を置き換えることができます。これは正規表現では可能ではないと思います:) –

関連する問題