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