让我们说,我写了一些代码来打印出“Hello World”。
我可以使用某种忽略的字符列表从我的打印字符串中忽略(在本例中为Hello World)。例如,我想删除“hello wo r ld”中的r,以便输出为“Hello Wold”
我有一个我正在使用的值。我有以下字符: &,\和*。
我认为其中一个字符导致我忽略了一些值。
通常我会自己测试一下,但此时我无法做到这一点。
答案 0 :(得分:2)
不知道为什么你会想要这样做,但写一个方法来做到这一点并不是那么难......
public static void printlnWithIgnores(String toPrint, Set<Character> ignore) {
for(char c : toPrint.toCharArray()) {
if(! ignore.contains(c)) {
System.out.print(c);
}
}
System.out.println();
}
至于字符串中由于字符文字而发生的事情,我不确定它是否可能。一些测试:
\b
(退格符号)无法正常工作(char)127
(删除字符)不起作用也就是说,如果您的密码中可能包含反斜杠(\
),那绝对是个问题。 Java中的\
用于表示具有以下字符的特殊字符。字符串"nnn"
仅为"nnn"
,但"n\nn"
为
n
n
因为\n
代表换行符,所以第三个n会丢失。
有许多这样的专业字符,但更重要的是,您的密码实际上不能包含\
而不会导致问题。如果下面的字符带有反斜杠是合法的(and \1
actually is),或者如果它不合法则不会打印出来,如果以下字符,您可以获得转义字符。
答案 1 :(得分:0)
我可能会稍晚一点加入聚会。但我将向您展示如何使用Java 8解决同样的问题。
List<String> ignore = Arrays.asList("r", "2", "3");
String text = "Hello world 1 2 3";
text=toRemove.stream().map(toRem-> (Function<String,String>)s->s.replaceAll(toRem, "")).reduce(Function.identity(), Function::andThen).apply(text);
System.out.println(text);
<强>输出:强>
Hello wold 1