gpt4 book ai didi

java - 使用 StreamTokenizer 获取下一个标记和剩余的字符串

转载 作者:行者123 更新时间:2023-12-01 13:08:07 25 4
gpt4 key购买 nike

我有一个 StreamTokenizer,可以对字符串进行标记。我对从字符串中获取下一个标记以及剩余字符串(没有我们刚刚获取的标记)的方法感兴趣。

public static void parseString(String s){
StreamTokenizer st = new StreamTokenizer(new StringReader(s));

try {
while (st.nextToken() != st.TT_EOF){
if (st.ttype == st.TT_WORD){
System.out.println("Word: " + st.sval);
if (st.sval.equals("start")){
start(st.sval, ???)
}
}
else if (st.ttype == st.TT_NUMBER){
System.out.println("Number: " + st.nval);

}
else if (st.ttype == '\''){
System.out.println(st.sval);
}
else{
System.out.println((char)st.ttype);
}
}
} catch (IOException e){}
}



public String start(String text, String theRest){
return "<start>" + text + "" + parseString(theRest) + "</start>";
}

我尝试过的一些事情:

  • 我尝试过仅使用原始 String ,但 StreamTokenizer 在标记化 String 后不会更改 String (我忘记了描述这一点的词)。

  • 我可以找到当前标记的索引,并将该标记从原始字符串中分割出来。

我想知道是否有更优雅的方法来解决这个问题?

最佳答案

关于第一个要点,我相信您想到的词可能是“不可变”。你是对的,任何看似操作字符串的操作实际上都是在创建一个新字符串;原件完好无损。

对于第二个要点,坦率地说,我也会提出同样的建议。目前我想不出更好的办法。

这是一个一般示例:

int startIndex = s.indexOf(currentToken) + currentToken.length;

String remainingString = s.subString(startIndex, s.length-1);

如果我的字符串是“Hi my name is Paul”,并且当前标记是“name”,则 remainingString 的结果应该是“is Paul”。

您可以轻松地将其封装在某个地方的辅助方法中,以帮助保持事物干净和分离。

可能不是您正在寻找的答案,但希望这会有所帮助。

关于java - 使用 StreamTokenizer 获取下一个标记和剩余的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23114847/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com