Java 更有效地读取字符串

Java 更有效地读取字符串,java,Java,我在我的方法中得到了相当大的输入字符串,但我实际上需要的只是该字符串的第一行。是否可以只提取已存在字符串的第一行?您可以使用它查找第一个换行符,并将子字符串从0提取到该换行符 编辑:示例(假定换行符为\n): 最简洁易读的选项是使用 Scanner是传统StringTokenizer的一种更高级的替代方案;它可以解析int,double,boolean,BigDecimal,regex模式等,从任何可读的,使用构造函数重载,这些重载也会接受文件,输入流,字符串,等等 另见 @Michael

我在我的方法中得到了相当大的输入字符串,但我实际上需要的只是该字符串的第一行。是否可以只提取已存在字符串的第一行?

您可以使用它查找第一个换行符,并将子字符串从0提取到该换行符

编辑:示例(假定换行符为\n):


最简洁易读的选项是使用

Scanner
是传统
StringTokenizer
的一种更高级的替代方案;它可以解析
int
double
boolean
BigDecimal
,regex模式等,从任何
可读的
,使用构造函数重载,这些重载也会接受
文件
输入流
字符串
,等等

另见

@Michael Mrozek我能举个例子吗?为了与不同风格的换行符兼容,你不能只在
\n
的第一个索引处切掉,因为(I)你可能会得到一个剩余的
\r
,或者(ii)如果换行符是
\r
,你甚至可能永远看不到
\n
。你不能只在第一行下一行吗?在调用该方法之前,请注意子字符串。它实际上将由原始字符串支持,除非您调用intern。因此,如果您使用substring,您应该.intern()检查结果,如果您希望原始字符串符合垃圾收集的条件。@M.Jessup您能给出一个答案吗?谢谢他说输入字符串很大;如果他只需要第一行+1就可以得到更“简洁易读的选项”,那么真的没有必要在每行换行符上拆分整个内容。虽然
str.substring(0,str.indexOf(“\n”))
是有效的,但我并不清楚它是否返回一行。
String str = "Line 1\nLine 2\nLine 3";
String firstLine = str.substring(0, str.indexOf("\n"));
//firstLine == "Line 1"
public string FirstLine(string inputstring)
        {
            //split the given string using newline character     
            string[] strarray = inputstring.Split('\n');

//return the first element in the array as that is the first line
            return strarray[0];
        }
String reallyLongString = //...
String firstLine = new Scanner(reallyLongString).nextLine();