使用Visual Studio Code保存文件时,我注意到新行不会自动添加到文件末尾,从而导致各种潜在问题.
如何在Visual Studio代码中自动插入新行?
对于一个scanner对象,该hasNextLine()方法返回false时该hasNext()方法返回true是怎么回事?
注意:根据输入文件,该hasNext()方法将按预期返回结果; 在hasNextLine()似乎没有被返回正确的结果.
这是我正在运行的代码,它创建了以下结果:
public void ScannerTest(Reader fileReaderObject){
Scanner scannerObj = new Scanner(fileReaderObject);
for(int i = 1; scannerObj.hasNext(); i++){
System.out.println(i + ": " + scannerObj.next());
System.out.println("Has next line: " + scannerObj.hasNextLine());
System.out.println("Has next: " + scannerObj.hasNext());
}
System.out.println();
scannerObj.close();
}
Run Code Online (Sandbox Code Playgroud)
以下是我传递给此扫描器的文件的实际内容:
a 3 9
b 3 6
c 3 3
d 2 8
e 2 5
f 2 2
g 1 7
h 1 4
i 1 1
Run Code Online (Sandbox Code Playgroud)
我有input.txt
1
2
3
4
5
Run Code Online (Sandbox Code Playgroud)
我需要得到这样的output.txt
1,2,3,4,5
Run Code Online (Sandbox Code Playgroud)
怎么做?
这个问题是我用于"在vim中保存文件而没有在文件末尾强行添加换行符"的烦恼的后续工作.
基本上我不能set noeol在我用,.vimrc因为它什么都没做!
如果我以二进制模式编辑文件,它会执行它应该执行的操作.(vim -b file而不是vim file)
这是为什么?
无论如何都有一个简单的偏好,.vimrc不在我编辑的每个文件中添加换行符?
另外,如果我开始以二进制模式编辑每个文件,我会遇到什么样的问题?到目前为止,我没有看到任何差异.
我经常使用wordpress,有时我会暂时更改wordpress核心文件,以便了解发生了什么,特别是在调试时.今天我有点意外.当我准备将我的更改提交到我的git存储库时,我注意到它将git status一个wordpress'文件标记为没有为提交暂存.我记得在关闭它之前我已经将所做的所有更改还原到该文件中,因此我决定使用diff以查看已更改的内容.我将项目中的文件与我保存在下载目录中的wordpress副本上的文件进行了比较.事实证明文件在最后有所不同.diff表示原始文件末尾缺少换行符:
1724c1724
< }
\ No newline at end of file
---
> }
Run Code Online (Sandbox Code Playgroud)
我从来没有触及那条线.我在大文件中间某处所做的更改.这让我认为vim在文件末尾添加了换行符.为什么会这样?
当我向github提交一个php文件时,我收到消息"文件末尾没有换行符".
这只是一个警告,我记得,无论出于何种原因,在文件末尾都有换行符是件好事.
但为什么?它是一个久违的残余,它仍然有优势还是甚至需要在PHP?如果是的话,出于什么原因?
编者注:根据OP后来的评论来判断,这个问题的要点是: 如何将一个带有CRLF(Windows风格)行结尾的文件转换为PowerShell中的LF-only(Unix风格)文件?
这是我的powershell脚本:
$original_file ='C:\Users\abc\Desktop\File\abc.txt'
(Get-Content $original_file) | Foreach-Object {
$_ -replace "'", "2"`
-replace '2', '3'`
-replace '1', '7'`
-replace '9', ''`
-replace "`r`n",'`n'
} | Set-Content "C:\Users\abc\Desktop\File\abc.txt" -Force
Run Code Online (Sandbox Code Playgroud)
使用此代码,我可以将3替换为2,使用空字符串替换为7和9.我只能使用换行符替换回车换行符.但这不起作用.
我现在有一个非常简单的脚本,它使用以下方法计算文本文件中的行enumerate():
i = 0
f = open("C:/Users/guest/Desktop/file.log", "r")
for i, line in enumerate(f):
pass
print i + 1
f.close()
Run Code Online (Sandbox Code Playgroud)
这需要大约3分半钟才能完成大约3000万行的15GB日志文件.如果我能在两分钟或更短的时间内得到它,那将是很好的,因为这些是每日日志,我们想要进行每月分析,因此代码必须处理30个~15GB的日志 - 可能超过一个半小时,我们希望尽量减少服务器上的时间和内存负载.
我也会接受一个很好的近似/估计方法,但它需要大约4 sig fig准确...
谢谢!
我使用Android工作室,当我承诺在GitHub上回购并查看git的差异我看到一个红色的标记线处与警告"在文件末尾不换行"几个文件的末尾.如何配置Android Studio以确保它在每个文件的文件文件中添加换行符.谢谢.
echo -n 'I hate cats' > cats.txt
sed -i '' 's/hate/love/' cats.txt
Run Code Online (Sandbox Code Playgroud)
这会正确更改文件中的单词,但也会在文件末尾添加换行符.为什么?这只发生在OSX中,而不是Ubuntu等.我该如何阻止它?
newline ×6
vim ×2
android ×1
bash ×1
coding-style ×1
diff ×1
enumerate ×1
eol ×1
git ×1
git-commit ×1
java ×1
line-count ×1
macos ×1
php ×1
powershell ×1
python ×1
replace ×1
sed ×1
shell ×1