我有一个基于webbrowser的app(客户端)和一个基于java的程序(服务器)。 我使用websocket-protocol进行客户端和服务器之间的连接。在成功握手之后,我将从客户端发送文本框到我的服务器。
所以我从我的应用程序(客户端)发送以下字符串:
{\r\n\"Name\":\"micheal\"\r\n}
当我的java程序获取字符串(保存在String str中)时,它在我的eclipse-console上打印了以下内容:
{\r\n\"Name\":\"micheal\"\r\n}
然后我的java程序调用解析器使用这段代码解析字符串str:
String delim = "\r\n";
// split content and put the elements in an array
String contentArray[] = str.split(delim);
//print the elements
for(int i = 0;i<contentArray.length;i++){
System.out.print(contentArray[i]+", ");
}
但是程序没有像我想的那样工作。解析器没有根据我的正则表达式delim =“\ r \ n”拆分我的String。我得到一个包含一个元素的数组,这是我原来的String:
{\r\n\"Name\":\"micheal\"\r\n}
我阅读了一些帖子,并尝试调整我的字符串,以便它可以工作,但它不起作用。
问题在我的情况下是什么问题,我该如何解决?
编辑1:我解决了。我从我的客户端发送以下字符串(基于webbrowse-based-App):
{\r\n\"Name\":\"micheal\"\r\n}
我用
delim= "\\\\r\\\\n"
但我有一些问题。
可以解释我这个问题的原因吗?为什么我要对包含regex =“\ r \ n \ n”的字符串使用delim =“\\\\ r \\\\ n”。我不理解它,因为当我将我的字符串放入代码中时,我的解析器工作正常。
答案 0 :(得分:2)
测试它:
String delim =“\\\\ r \\\\ n”;
答案 1 :(得分:2)
您的代码看起来不错,请检查这是否符合您的要求
public class Main {
public static void main(String[] args) throws Exception {
String str = "{\r\n\"Name\":\"micheal\"\r\n}";
String delim = "\r\n";
// split content and put the elements in an array
String contentArray[] = str.split(delim);
//print the elements
for (int i = 0; i < contentArray.length; i++) {
System.out.println(i+": "+contentArray[i]);
}
System.out.println("Tokens: "+contentArray.length);
}
}
输出
0: { 1: "Name":"micheal" 2: } Tokens: 3
如果情况如此
String str = "{\\r\\n\"Name\":\"micheal\"\\r\\n}";
使用
String delim = "\\\\r\\\\n";
答案 2 :(得分:0)
您需要使用&#34; \\ r \\ n&#34;因为&#39; \&#39;是独特的角色,而不是逃避。
或尝试System.getProperty(&#34; line.separator&#34;)