java indexOf 在应该返回正数时返回 -1

标签 java network-programming substring indexof datainputstream

我是网络编程的新手,以前从未使用过 Java 进行网络编程。 我正在使用 Java 编写服务器,但在处理来自客户端的消息时遇到了一些问题。我用过

DataInputStream inputFromClient = new DataInputStream( socket.getInputStream() );
while ( true )  {
    // Receive radius from the client
    byte[] r=new byte[256000]; 
    inputFromClient.read(r);

    String Ffss =new String(r); 
    System.out.println( "Received from client: " + Ffss );
    System.out.print("Found Index :" );

     System.out.println(Ffss.indexOf( '\a' ));
    System.out.print("Found Index :" );
    System.out.println(Ffss.indexOf( ' '));

    String Str = new String("add 12341\n13243423");
    String SubStr1 = new String("\n");     
    System.out.print("Found Index :" );
    System.out.println( Str.indexOf( SubStr1 ));      
}

如果我这样做,并且有一个示例输入 asg 23\aag,它将返回:

Found Index :-1
Found Index :3
Found Index :9

很明显,如果String对象是从头创建的,indexOf可以定位到“\”。 如果 String 是从处理 DataInputStream 中获得的,代码怎么会在定位\a 时遇到问题?

最佳答案

试试 String abc=new String("\\a"); - 你需要 \\ 来得到字符串中的反斜杠,否则 \ 定义“转义序列”的开始。

关于java indexOf 在应该返回正数时返回 -1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29959505/

相关文章:

java - 需要我的 GUI 从 JTextField 读取并在 JPanel 中显示

Java数据输入流

javascript - 获取 JavaScript 中最后一个斜杠后的字符串值

c# - 获取特定值作为字符串 c#

mysql - SQL 查询,按子字符串排序

java - Hadoop : Tools for visualizing key value data and files for development

java - 使用 Shiro 通过 LDAP 对用户进行身份验证

java - 如何使用 SSLv2 初始化 ssl 连接

c - 识别 connect( ) 的问题

c - 我如何计算以下 TCP/IP 协议(protocol)的 CRC 校验和