我将一些代码从objective-c移动到java。该项目是XML / HTML Parser。在目标c中,我几乎只使用scanUpToString(" mystring");方法。
我查看了Java Scanner类,但它将所有内容都分解为令牌。我不想要那个。我只是希望能够扫描到子串的出现并跟踪整个字符串中扫描仪的当前位置。
任何帮助都会非常感谢!
修改的
更具体。我不想让扫描仪进行标记化。
String test = "<title balh> blah <title> blah>";
Scanner feedScanner = new Scanner(test);
String title = "<title";
String a = feedScanner.next(title);
String b = feedScanner.next(title);
在上面的代码中,我喜欢feedScanner.next(title);扫描到下一次出现"<title"
实际发生的事情是第一次调用feeScanner.next它是有效的,因为默认分隔符是空格,但是,第二次调用它失败(为了我的目的)。
答案 0 :(得分:1)
您可以使用String类(Java.lang.String)实现此目的。
首先获取子字符串的第一个索引。
int first_occurence = string.indexOf(substring);
然后遍历整个字符串并获取子字符串的下一个值
int next_index = indexOf(str,fromIndex);
答案 1 :(得分:0)
也许String.split适合你?
s = "The almighty String is mystring is your String is our mystring-object - isn't it?";
parts = s.split ("mystring");
结果:
Array("The almighty String is ", " is your String is our ", -object - isn't it?)
你知道你的“神秘”必须在。我不确定开始和结束,所以也许你需要一些s.startsWith ("mystring") / s.endsWith
。
答案 2 :(得分:0)
直接使用String
的方法,这真的很容易:
String test = "<title balh> blah <title> blah>";
String target = "<title";
int index = 0;
index = test.indexOf( target, index ) + target.length();
// Index is now 6 (the space b/w "<title" and "blah"
index = test.indexOf( target, index ) + target.length();
// Index is now at the ">" in "<title> blah"
根据你想要实际做什么,除了穿过字符串,不同的方法可能会更好/更糟。例如。如果您想在blah> blah
之间获得<title
字符串,Scanner
便利:
String test = "<title balh> blah <title> blah>";
Scanner scan = new Scanner(test);
scan.useDelimiter("<title");
String stuff = scan.next(); // gets " blah> blah ";