gpt4 book ai didi

java - 如何从字符串中删除引号中的子字符串? (没有正则表达式)

转载 作者:行者123 更新时间:2023-12-01 08:58:33 24 4
gpt4 key购买 nike

我有一个包含以下内容的文本文件:鲍勃去“商店”商店“买牛奶”买牛奶。

我想从 string1 中删除所有引用的内容,因此它只包含:Bob 去商店买牛奶。

有没有办法在不使用正则表达式的情况下做到这一点?我目前正在尝试使用 split() 方法。我首先使用 split() 将文本文件读入名为 string1 的字符串变量,然后将值存储回名为 newString 的新字符串。

String string1 = new Scanner(new File("C:/bob.txt")).useDelimeter("\\A").next();       
String newString = "";

String[] arr = string1.split("\"");
for (int i=0; i<arr.length-1; i++){
newString += arr[y];
}

我对 java 很陌生,不确定我是否正确使用了 split 方法。当我打印出 newString 时,它显示为“鲍勃去商店买牛奶”

我的问题是它应该说“鲍勃去商店买牛奶”。该字符串末尾缺少句点,并且写入了两次“the store”。

有人可以帮我完成这项工作吗? (如果有比 split() 更好的方法,我想知道。我也希望它适用于具有任意数量的引用部分的字符串。也没有模式匹配/正则表达式)谢谢!

最佳答案

那会起作用:

public static void main(String[] args) {
String str = "Bob went to \"the store\" the store to \"buy milk\" buy milk.";
boolean inQuotes = false;
StringBuilder sb = new StringBuilder();
for (int i = 0; i < str.length(); i++) {
if (str.charAt(i) == '"') inQuotes = !inQuotes;
else if (!inQuotes) sb.append(str.charAt(i));
}
System.out.println(sb.toString());
}

请注意,结果 “Bob gone to the store to buy milk.”to the storeto buy milk 之间有两个空格,因为它只是删除引号之间的内容。

关于java - 如何从字符串中删除引号中的子字符串? (没有正则表达式),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41881755/

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