【问题标题】:Java String index with "\n"带有“\n”的Java字符串索引
【发布时间】:2014-02-21 06:33:26
【问题描述】:

用这个字符串:

String test = "hey\nyo\nsup\nyello";

我打电话给

System.out.println(test.indexOf("yello")); 

我得到 11,这个数字是怎么产生的?并且“\n”算作字符串中的一个字符吗?

【问题讨论】:

    标签: java string indexof


    【解决方案1】:

    “\n”算作字符串中的一个字符吗?

    是的,在 java 中 \n 被视为单个字符

    h e y \n y o \n s u p \n yello
    -------------------------------
    0 1 2  3 4 5  6 7 8 9 10 11
    

    这就是为什么你用11 换成test.indexOf("yello")


    你可以试试这个作为证明:

    String str = "\n";
    System.out.println(str.length());
    

    会给你1作为输出

    【讨论】:

      【解决方案2】:

      考虑

      "hey\nyo\nsup\nyello"
       0 0  0  0 0  1 1 1    (x)
       0 2  4  6 8  0 2 4    (y)
      

      字符串中的每个字符索引为 (10x+y)。

      如您所见,y 位于第 11 位(是的,\n 是一个字符)

      【讨论】:

      • 第一行的数字是什么意思?...请详细说明(我会投票)。
      • @ambigram_maker 上下数字组合是字符的位置。例如。 00=0, 04=4, 10=10
      • 数字代表字符串中每个字符的偏移量。它很难阅读,因为你必须向下阅读,可以这么说。 RC 之所以这样写,是因为它允许在正确字符下方表示多位偏移。
      【解决方案3】:

      是的,\n 在 Java 中被视为单个字符。

      数字产生如下:

      "hey\nyo\nsup\nyello"
       0 0  0  0 0  1 1 1 
       0 2  4  6 8  0 2 4
      

      这表明y 位于11 位置。数字代表字符串中每个字符的偏移量。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-01-13
        • 2011-04-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-12-02
        • 2012-12-01
        相关资源
        最近更新 更多