我有一个文本文件,其中包含以下内容:鲍勃去“商店”商店“买牛奶”买牛奶。
我想删除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方法。当我打印新闻时,上面写着“鲍勃去商店买牛奶”
我的问题是,它应该说“鲍勃去商店买牛奶。”字符串缺少结尾的句点,它写了两次“The store”。
有人能帮我做这个工作吗?(如果有比分裂更好的方法()我想知道。我也希望它能为一个有任意数量引用部分的字符串工作。也没有模式匹配/正则表达式)谢谢!
您可以使用Java 8的流
在字符串
的字符数组
中进行流,并通过过滤器
跳过双引号,例如:
String s = "Bob blah blah \"quote\" blah \"another quote\"";
System.out.println(s);
String string = s.chars()
.filter(c -> c != '"')
.collect(StringBuilder::new,
StringBuilder::appendCodePoint, StringBuilder::append)
.toString();
System.out.println(string);
另一种方法是简单地循环遍历char
数组并跳过双引号,例如:
String s = "Bob blah blah \"quote\" blah \"another quote\"";
System.out.println(s);
StringBuilder s1 = new StringBuilder();
for(char c : s.toCharArray()){
if(c != '"'){
s1.append(c);
}
}
System.out.println(s1.toString());
这将奏效:
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去商店买牛奶了."
在to the store
和to Buy牛奶
之间有两个空格,因为它只是删除引号之间的内容。
我正在创建一个单词替换脚本。我遇到了一个路障,忽略引号之间的字符串,并且在这里找不到一个不涉及正则表达式的体面解决方案。 我有一个工作片段,它循环遍历字符串中的每个字符,并计算出最近的报价是开始报价还是结束报价(无论是单引号还是双引号),并忽略转义报价。问题是,为了提供100%准确的体验,它必须在每次字符串更改时运行(由于它的工作方式,它可以在单个函数中更改60K次),并且由于字符串长度的可能性,
问题内容: 我有一个清单 我正在尝试删除其超字符串已经在列表中的字符串。在这种情况下,结果应为: 我已经写了代码: 但它似乎不起作用。我读过,我们无法在列表上进行迭代时将其删除。因此,副本,而这是我的原始列表。 问题答案: l=[‘abc’,’abcdef’,’def’,’defdef’,’polopolo’] print [j for i, j in enumerate(l) if all(j
问题内容: 如何在Java中从给定的字符串中删除所有方括号(“ []”)? 在这种情况下将使用什么正则表达式? 问题答案: 使用这个:
问题内容: 我有以下字符串作为输入: 最终输出将如下所示: 也就是说 ,将删除所有前导零和尾随零,并且正/负零都将简单地为零。 我们可以通过首先分割字符串并为每个部分使用Regex来实现。但是 我的字符串大小超过10000 。 我们怎样才能做到这一点呢? 编辑: 答案分析: 我已经用String测试了所有答案,并且 Wiktor Stribiewew的 答案通过了所有测试用例。(请参阅此处:htt
我有以下字符串作为输入: 最终输出将是这样的: i、 e.所有前导零和尾随零将被删除,正/负零将仅为零。 我们可以通过首先拆分字符串并对每个部分使用Regex来实现这一点。但是我的字符串大小超过10000。 我们如何使用实现这一点? 编辑: 答案分析: 我用字符串测试了所有的测试用例。(见此处:https://regex101.com/r/tS8hE3/9)其他答案在大多数案例中都得到了通过,但不
问题内容: 我需要删除字符串中的一些子字符串(在大型数据集中)。该 子常常包含特殊字符,像这样的:,^,/,…和 的replaceAll()将它们视为对正则表达式的特殊字符,如点 会匹配任何字符,这是不是我真正想要的东西。 是否有其他函数可以执行“替换”而不将第一个 参数视为正则表达式? 问题答案: 只需使用String.replace()。它的功能相同,但是它 内部处理了特殊字符的转义,以避免您