2016-10-10 10 views
0

ある文字が2つの他の文字の間にあるかどうか確認したいと思います。文字xが2つの引用符の間にあるかどうか確認してください

String myString = "Hello, my name is 'Tesda', and this is 'ASDfs'." 

は私が"ASDfs"'S'も、私は、すべての''をチェックしに直接ジャンプしないようにしたい念頭に置いて、''かの間にあるかどうかを確認したい:次の文字列与え例えば

、 second ''

私がある、(私が今までそれを必要としなかったとして、私は、全くこれに慣れていないよ)愚かなコードを試してみた

boolean isBetween; 

if (!MyString.substring(MyString.indexOf("'"), MyString.indexOf("'")).contains("S")) 
    isBetween = true; 

まあ、これは動作しませんでした私はそれを完璧にする方法を理解していません。

また、私は''の間でしかなく、"my name is"の後ではなく、''の中にあれば、その文字のインデックスを得ることを考えました。その特定のインデックスは可能ですか?提供さ答えを使用して

は、私は(私はこの質問を投稿する理由)次のコードを作りました:

String NewText = "Hello, My NAme is 'Ba', i'm from 'LA' "; 
boolean contains = false; 
int indexOfS = -1; 

String MyString_temp = NewText; 

while (MyString_temp.length() >= 0) { 
int first = MyString_temp.indexOf("\'"); 
if(first == -1) 
    { 
    break; 
    } 
int second = MyString_temp.substring((first + 1)).indexOf("\'"); 
second = second + first + 1; 
    if(second == -1) 
      { 
     break; 
      } 
contains = MyString_temp.substring(first,second).contains("A"); 
    if (contains) { 
     break; 
     } 
MyString_temp = MyString_temp.substring((second + 1)); 
} 

Log.i("ResultTest","Index is: " + indexOfS + " - Text is: " + MyString_temp); 


if(!contains){ 
Log.i("ResultTest", "Yes " + i); 
Log.i("ResultTest","TeF: " +NewText.replace(NewText.substring(indexOfS,indexOfS+1),"Test")); 
} else 
Log.i("ResultTest", "No " + i); 

出力

Index is: -1 - the text here .. 
Failed to output, invalid index 
+3

regex' ... – brso05

+0

私はしたいですが、私はどのように、あなたのサンプル/リンクしてくださいかわからない? – Jaeger

+0

あなたは正規表現を見ましたか? – Ash

答えて

2

regular expressionsを使用することを検討してください。それはトリックを行っている可能性があるようにあなたの最初のコードブロックが見えた、しかし、あなたはindexOf()のみの最初の発生を返すことを覚えておく必要があります更新質問に対する更新の答え:あなたの例では、EDIT

MyString.matches("\'S\'"); 

ような単純なものでしたあなたが必要なもの。 whileループ後

String MyString_temp = MyString; 
String lookingFor = "S"; 
String separator = "\'"; 

boolean contains = false; 
int indexOfLooking = -1; 

while (MyString_temp.length() >= 0) { 
    int first = MyString_temp.indexOf(separator); 
    if(first == -1) { 
     break; 
    } 
    int second = MyString_temp.substring(first + 1).indexOf(separator); 
    second += first + 1; 
    if(second == -1) { 
     break; 
    } 
    indexOfLooking = MyString_temp.substring(first, second).indexOf(lookingFor); 
    contains = (indexOfLooking >= 0) 
    if (contains) { 
     break; 
    } 
    MyString_temp = MyString_temp.substring(second + 1); 
} 

containsは、あなたの答えを持っている、とindexOfLookingSの場所があります。これは、仕事ができます。

+0

更新された投稿を確認してください。 – Jaeger

+1

このシナリオを考えてみましょう 'lkkjljk 'lkjlj' ***** s ****** 'lkjlkj'.'これは、' ''と ''の最後の出現の間に 's'があるので一致します''。私はそれが望ましい結果だとは思わない。あなたは非貪欲な表現がほしいかもしれません... – brso05

+0

ちょうど私が考えていたことは、@ハサンの仕事によってこぼれた方法でしょうか? – Jaeger

0

のApache Commonsのを使用すると、以下の方法で使用することができます得るために

StringUtils.substringBetween(str, "'"); 

をString []型のすべての結果はこれを使用して:

StringUtils.substringsBetween(str, "'", "'"); 
あなたは `使用することを検討すべきである
関連する問題