因此,我很快就会试图回答关于代码问题的问题。代码挑战的目的是删除字符串,删除代码中的所有注释。
所以我有这个代码,它执行剥离并给出我期望的结果:
locations <- read.csv(file = "stranded_location.csv", header = T)
map <- ggplot() + coord_fixed() + xlab("") + ylab("")
base_world_messy <- map +
geom_polygon(data=world_map, aes(x=long, y=lat, group=group),
colour="grey21", fill="grey21")
base_world_messy
map_data_locations <- base_world_messy +
geom_point(data=locations,
aes(x=longitude, y=latitude), colour=locations$subspecies,
fill=locations$subspecies, pch=21, alpha=I(0.7))
map_data_piloto
但是出于一些相当奇怪的原因,这个测试失败了:
public static String stripComments(String text, String[] commentSymbols) {
boolean ignoreNext = false;
StringBuilder noCommentString = new StringBuilder();
StringBuilder currentLine = new StringBuilder();
for (int i = 0; i < text.length(); i++) {
char c = text.charAt(i);
if (String.valueOf(c).equals("\n")) {
currentLine.append("\\n");
ignoreNext = false;
noCommentString.append(currentLine.toString().trim());
currentLine = new StringBuilder();
continue;
}
if (!ignoreNext) {
for (int j = 0; j < commentSymbols.length; j++) {
if (commentSymbols[j].equals(String.valueOf(c))) {
ignoreNext = true;
noCommentString.append(currentLine.toString().trim());
currentLine = new StringBuilder();
}
}
if (!ignoreNext) {
currentLine.append(c);
}
}
}
return noCommentString.toString();
}
如果我要评估代码,实际的字符串是:
@Test
public void stripComments() throws Exception {
String expected = "apples, pears\ngrapes\nbananas";
String actual = StripComments.stripComments("apples, pears # and bananas\ngrapes\nbananas !apples", new String[]{"#", "!"});
assertEquals(expected, actual);
}
当然你可以看到预期的字符串是:
apples, pears\ngrapes\nbananas
为什么这个失败了,我确定这与某些奇怪的行为有关
答案 0 :(得分:1)
我认为你应该追加&#34; \ n&#34;而不是&#34; \\ n&#34;。它在这里不需要转义字符。 currentLine.toString()。trim()也会导致删除新行字符,以避免它。而是尝试使用currentLine.toString()。某些系统可能需要使用&#34; \ r \ n&#34;而不是&#34; \ n&#34;。如果&#34; \ n&#34;请尝试这样做不适合你。