如何解决如果从控制台将字符串作为输入并包含换行符,则string.replaceAll“ \\ n”,“”不起作用
案例1:从扫描仪获取字符串输入,并将\ n替换为-(无效)
Scanner sc = new Scanner(System.in);
String str = sc.nextLine();
str = str.replaceAll("\n","--");
System.out.println(str);
输入:“ UY9Q3HGjqYE1aHNIG + Rju2hS3WAAEFlakOSGZWffabFpWkeQ \ nz4g6mfKoGVR2 \ nF1QkiHRMZfL4mCvChAuL7gCT3d3SrmxD6lBnOiWiFTPUz4Q ==
第2种情况:如果我直接分配与上述值相同的字符串,同样的事情会起作用。
String str = "UY9Q3HGjqYE1aHNIG+Rju2hS3WAAEFlakOSGZWffabFpWkeQ\nz4g6mfKoGVR2\nF1QkiHRMZfL4mCvChAuL7gCT3d3SrmxD6lBnOiWiFTPUz4Q=\n";
str = str.replaceAll("\n","--");
PS:我已经尝试使用\ n,line.separater
解决方法
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.9.2/jquery-ui.min.js" integrity="sha512-cViKBZswH231Ui53apFnPzem4pvG8mlCDrSyZskDE9OK2gyUd/L08e1AC0wjJodXYZ1wmXEuNimN1d3MWG7jaQ==" crossorigin="anonymous"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.9.2/themes/base/jquery-ui.min.css" integrity="sha512-YqF4f2cbm2jH7sEEu/iDJFjSQ/qUSzoiQIK2OQ3OFTsQQE5dxoCTYz1wZrTMv8ES8NYqOB5ChZU8jQdMaEv/yg==" crossorigin="anonymous" />Date From : <input type="text" name="datefrom" id="inputdate2" required>
<p id='someText'>
<!-- I want to set the date here after it was clicked -->
</p>
输出:
输入-带有反斜杠和n
我们需要两次转义反斜杠:要告诉正则表达式意图使用文字反斜杠,我们需要放置两个反斜杠。为了告诉Java编译器我们打算在字符串中使用文字反斜杠,需要将这两个中的每一个都输入为两个反斜杠。因此,我们最终输入了其中四个。
String str = "Input\\nwith backslash and n";
str = str.replaceAll("\\\\n","--");
System.out.println(str);
读取一行,因此该行不能包含换行符。因此,我假设您输入的是反斜杠和n。
减少混乱的解决方案
我们无需在此处使用任何正则表达式,这样做会使转义业务复杂化。所以不要。
nextLine()
输入-带反斜杠-和n-
String str = "Input\\nwith backslash\\nand n\\n";
str = str.replace("\\n","--");
System.out.println(str);
方法将替换所有出现的给定文字字符串(尽管方法名称中没有replace
)。因此,现在我们只需要一个转义,一个用于Java编译器。
在正则表达式中,如果您使用单个反斜杠,则“ \”会引发错误,因为它是转义字符。如果使用双反斜杠“ \”,则会抛出“ java.util.regex.PatternSyntaxException:索引附近发生意外内部错误”。
在正则表达式中,双反斜杠被视为单反斜杠“ \”。因此,应添加四个反斜杠“ \\”以匹配字符串中的单个反斜杠。
请尝试将\ n替换为\\ n:
Scanner sc = new Scanner(System.in);
String str = sc.nextLine();
str = str.replaceAll("\\\\n","--");
System.out.println(str);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。