例如,我有前邊界'x'和後邊界'y'在特定的兩個字符之間獲取字符串的最簡單方法是什麼?
E.G. 給定一個字符串'abcxfoobaryblablah',它應該返回'foobar'。
假設兩個邊界只在字符串中出現一次,就像例子中一樣。
謝謝!不必使用正則表達式,但我想這是最好的方法。
例如,我有前邊界'x'和後邊界'y'在特定的兩個字符之間獲取字符串的最簡單方法是什麼?
E.G. 給定一個字符串'abcxfoobaryblablah',它應該返回'foobar'。
假設兩個邊界只在字符串中出現一次,就像例子中一樣。
謝謝!不必使用正則表達式,但我想這是最好的方法。
String s = "abcxfoobaryblablah";
s = s.substring(s.indexOf('x') + 1, s.indexOf('y'));
System.out.println(s);
出
foobar
是的,但如果缺少'x'或'y',或者'y'出現在'x'之前,您將會遇到問題。在這種情況下,未經檢查的例外... –
確實如此,但他可以根據自己的具體需要量身定製,我不知道他可能有什麼其他要求。 – arynaq
可能是一個漫長的代碼,而只是一個簡單的邏輯。
String str="abcxfoobaryblablah";
char array[]=str.toCharArray();
boolean flag=false;
String answer="";
for(int i=0;i<array.length;i++)
{
if(array[i]=='x'){
flag=true;
continue;
}
if(array[i]=='y') break;
if(flag)answer+=array[i];
}
System.out.println(answer);
String input = "abcxfoobaryblablah";
int startIndex = input.indexOf("x");
int endIndex = input.indexOf("y");
String output = input.substring(startIndex+1, endIndex);
System.out.println(output);
你當然可以做子,但它是可能的正則表達式。
String str = "abcxfoobaryblablah";
str = str.replaceAll("^.*x|y.*$", "");
^.*x
從String
開始的字符匹配的最多x
。 y.*$
將字符從y
匹配到String
的末尾。
注意,如果x
是y
後,那麼這將x
後只保留人物的String
結束。如果x
不存在,它將從String
開始的字符保留爲y
。如果你只希望它當都x
和y
都在那裏以正確的順序工作,那麼這就是你想要的東西:
String str = "abcxfoobaryblablah";
str = str.replaceAll("^.*x(.*)y.*$", "$1");
這使用groups。
最簡單的方法是:
String middle = str.replaceAll(".*x(.*)y.*", "$1");
IDK的Java,但在正則表達式是'×([^ Y] +)'。你也可以做'x(。*?)y'。如果真的有一次,那麼'x(。*)y'。您可以使用substr並搜索x,y的索引,然後搜索它之間的substr。沒有正則表達式需要 – 2013-11-10 04:34:32