2015-07-28 59 views
1

我的文字如何獲得Java中的換行索引號?

Agency ABC Agency CHS 
Location Mumbai 

我想獲取從上述文字值「ABC局CHS」。 ABC Agency CHS是動態數據,可能會更改。同樣的位置字段也可能會改變。

我使用字符串來獲取值

data.substring(data.indexOf("Agency") + ("Agency").length(), data.indexOf("Agency") + 25); 

使用上面的代碼中,我得到了想要的值,但我知道這是不是一個正確的解決方案。

是否有任何選項來獲得斷線的指數原子能機構線?

有人請提出一個更好的辦法?由於

+0

爲什麼你認爲這是不是一個正確的解決方案? – TheBlastOne

+0

@TheBlastOne是因爲'Agency','6'和'25'是硬編碼的,而他說數據是動態的。 – A4L

+0

因爲如果數據從ABC Agency CHS更改爲XYZABC Agency CHS,那麼我相信它不會獲取整個值。 如果值長度較小,則會發生類似的情況。 – Naseem

回答

1

您可以使用data.substring(data.indexOf("Agency") + 6, data.indexOf("\n"));

編輯:既然你有很多換行,你可以使用,

data.substring(data.indexOf("Agency") + 6, data.indexOf("\n", data.indexOf("Agency")));

這將得到字符串直到「代理商」之後的第一條線路中斷

+0

我早些時候嘗試過,但沒有奏效。以上數據僅僅是一個例子。我必須從文件中獲取值,並且該文件中會有很多換行符。我相信上面的代碼將使用文件中第一個換行符的索引號。 有沒有找到該特定文本行的換行符的方法?感謝您的迴應。 – Naseem

+0

這就像一個魅力。非常感謝。我已經接受你的答案。 :) – Naseem

0

你可能想這

agency = data.substring(data.indexOf("Agency"), data.indexOf("Location")); 
location=data.substring(data.indexOf("Location"), data.length); 
+0

感謝您的迴應,但正如我上面提到的位置字段也將改變,因此不能使用此代碼。 – Naseem

1

我會使用正則表達式。從

(?:^Agency)([A-Z]* .* [A-Z]*) 

匹配ABC Agency CHS第一捕獲組,從而允許在ABCCHS長度靈活性。領先的Agency字符串被忽略(但是匹配需要)。

+0

另外,我認爲這個問題太複雜了,用substring -s和indexOf-s以可讀的方式解決它。 –

+0

我認爲你有點不對。 。*會匹配很多,最終會出現多行。難道你不應該貪婪嗎?例如:(?:^ Agency)([AZ] *。*?[AZ] * $)(我也在$中加了一行以確保你得到一整行,但它是可能是不必要的。) – Astrogat

+0

我不確定'*?',因爲它們只是兩個量詞;其餘的爲我工作。我用一個在線正則表達式測試器進行了測試,它似乎符合描述,但你可能是對的,因爲它可能不夠嚴格。謝謝 –