【问题标题】:Issue with Read Character by Character of a String : JAVA逐字符读取字符串的问题:JAVA
【发布时间】:2012-04-06 06:38:36
【问题描述】:

我有一个很长的字符串,我想逐个字符地读取,直到字符串结束。

在Java中,我找到了两种阅读方式:

  1. 使用 CharAt。
  2. 使用 StringReader。

谁能帮帮我:

  1. 哪种方式更快?
  2. 如何使用 StringReader 逐字符读取直到结束 字符串?

提前致谢。

【问题讨论】:

    标签: java


    【解决方案1】:
    1. 测量并找出答案!说真的,与你的硬件相比,我的硬件可能会有所不同。但我怀疑charAt()
    2. 它只是一个Reader,因此它具有与任何其他Reader 相同的方法,包括int read(),它将一个一个地返回每个字符的Unicode 代码点

    【讨论】:

    • 谢谢。但你为什么怀疑?有什么具体原因吗?
    【解决方案2】:
    1. 自己测量。一旦将字符串加载到内存中,我就看不出有任何有意义/显着的差异。
    2. StringReader#read() (RFTD)

    【讨论】:

      【解决方案3】:

      “很长”有多长?

      使用 toCharArray() 方法将字符串转换为 char 数组并从循环中获取:

      String mystring = "test";

      char[] myCharArray = mystring.toCharArray();

      【讨论】:

      • 这并没有回答 OP 提出的任何一个问题。
      • 他想“逐个字符地读取,直到字符串结束。”
      • 然后他说他在 Java 中找到了两种阅读方式,我向他提供了第三种可能可行的方式。
      • 如果您需要更有说服力证明我不是在拖钓:stackoverflow.com/questions/1672415/…
      【解决方案4】:

      这是一个简单的类,旨在按照您的要求使用 charAt 方法:

      public class Test {
      
      static String tS = "Hello this is a string";
      
      
      public static void main (String args []) {
      //make a blank character that gets replaced each time the for loop runs     
      char c;     
          for (int j = 0; j < tS.length(); j++) {
                  //for loop runs up the length of the string, then sets c to the
                  //current character in the string. Printing c just proves the concept.
              c = tS.charAt(j);
              System.out.println(c);
          }
      }
      }
      

      请记住,这些都不需要在类或 main 方法中完成 - 您可以在代码中任何您需要的地方完成。

      【讨论】:

        猜你喜欢
        • 2010-11-08
        • 1970-01-01
        • 2014-11-22
        • 1970-01-01
        • 1970-01-01
        • 2015-01-03
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多