gpt4 book ai didi

java - 从字符串中提取字符和单词

转载 作者:行者123 更新时间:2023-11-30 07:34:36 24 4
gpt4 key购买 nike

我想逐个字符扫描输入行并根据有效标记生成字符串,即 “true”, “false”, “^” “&”, “!”, “(”, “)”

例如,如果给我一个字符串,例如 String line = true & ! (false ^ true)

我必须生成代币"true", "&", "!", "(", "false", "^", "true", ")"

我一直在尝试使用 split() 将字符串划分为标记并将它们存储在像这样的数组中 String[] result = line.split(" ") ,然后在循环内使用一堆 if 语句来查看该索引处的标记是否与任何有效标记匹配,然后仅返回该标记。这就是我到目前为止一直在尝试使用的东西

for(int i = 0; i < line.length();i++){
if(result[i].equals("true") || result[i].equals("false") || result[i].equals("^")
|| result[i].equals("&") || result[i].equals("!") || result[i].equals("(")
|| result[i].equals(")")){
nextToken = result[i];
}

但显然这不会提取彼此相邻的有效标记,例如当字符串包含类似 (true 的内容时或者这个true^false ,它应该返回三个标记: "true", "^", "false" 。有没有办法将不包含空格或任何特殊字符的字符串划分为我感兴趣的标记?

最佳答案

只要输入准确,以下内容就会对您的输入进行标记:

public class Tokenizer {

public static void main(String[] args) {

// true, false, ^ &, !, (, )
String SYMBOLS = "^&!()";

String line = "true&!(false^true)";
List<String> tokens = new ArrayList<String>();

char[] in = line.toCharArray();
for (int i = 0; i<in.length; i++) {
if (in[i] == ' ')
continue;
if (SYMBOLS.indexOf(in[i]) >= 0) {
tokens.add(String.valueOf(in[i]));
} else if (in[i] == 't') {
tokens.add("true");
i += "true".length()-1;
} else if (in[i] == 'f') {
tokens.add("false");
i += "false".length()-1;
}
}

for (String token : tokens)
System.out.println(token);

}
}

生成输出:

true
&
!
(
false
^
true
)

关于java - 从字符串中提取字符和单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35568376/

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