我的程序可以接受换行符为\n,\ r \n或\ r \n的数据(例如Unix,PC或Mac样式)
构造一个匹配编码的正则表达式的最佳方法是什么?
或者,我可以在输入上使用universal_newline支持,但现在我有兴趣看看正则表达式是什么.
我使用Java代码在Unix环境中创建了一个文本文件.
对于写文本文件我使用java.io.FileWriter和BufferedWriter.并且对于每行之后的换行我使用bw.newLine()方法(在哪里bw是对象BufferedWriter).
我通过从Unix环境本身附加邮件(使用Unix命令自动化)发送该文本文件.
我的问题是,在我从Windows系统中的邮件下载文本文件后,如果我打开该文本文件,则数据未正确对齐.newline()性格不起作用,我想是的.
如果我在Windows环境中打开文本文件,我想要在Unix环境中使用相同的文本文件对齐.
我该如何解决这个问题?
下面的Java代码供您参考(在Unix环境中运行):
File f = new File(strFileGenLoc);
BufferedWriter bw = new BufferedWriter(new FileWriter(f, false));
rs = stmt.executeQuery("select * from jpdata");
while ( rs.next() ) {
bw.write(rs.getString(1)==null? "":rs.getString(1));
bw.newLine();
}
Run Code Online (Sandbox Code Playgroud) 在记事本++中,有一个工具栏按钮可以打开/关闭EOL字符的显示,即回车和换行.
Sublime Text 2可以做类似的事吗?
\n和\ r \n之间有什么区别(我知道它与操作系统有关),什么是回应跨平台工作的换行符的最佳方式?
编辑:为了回应Jarod,我将使用它来回显.txt日志文件中的换行符,但我相信我将来会用它来回复HTML makup到页面上.
在gvim on windows上,如果我有CRLF eol的文本,那么文本将在每行的末尾显示^ M.
如何从显示中"隐藏"特殊字符?
:set nolist命令"""不解雇它.我很难过.
UPDATE
我做了:设置fileformats = unix,dos作为列表,但它最初没有工作.我关闭了文件并重新打开它并且它有效.默认情况下,我将fileformats设置为仅unix值.谢谢你的回答.
结合svn diff --ignore-eol-style和--ignore-all-space不起作用:
$ svn diff -x -w --ignore-eol-style -r 1143:1177 somefile
svn: invalid option: --ignore-eol-style
Run Code Online (Sandbox Code Playgroud)
和,
$ svn diff -x --ignore-eol-style -x --ignore-all-space -r 1143:1177 somefile
Run Code Online (Sandbox Code Playgroud)
仅执行最后一个选项:ignore-all-space
以前有人处理过吗?
我使用Git本身如何处理行尾很高兴,通过core.autocrlf,core.eol+ gitattributes(Tim的文章是优秀).
我有一个autocrlf设置为的Windows Git仓库true.因此,所有文本文件都存储在repo中,LF并作为工作目录存放在工作目录中CRLF.这个仓库是从一个SVN仓库中克隆出来的,我们仍然使用这个仓库从/拉到(SVN仓库是我们用于触发CI等的中央,受祝福的仓库).
但我不知道git-svn在推/拉操作期间如何处理行结尾.
任何人都可以解释git-svn在这个例子中做什么?
为什么DOS/Windows和Mac决定使用\ r \n和\ r来代替行结尾而不是\n?它只是试图与Unix"不同"的结果吗?
现在Mac OS X是Unix(类似),Apple是否从\ r切换到\n?
编者注:根据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.我只能使用换行符替换回车换行符.但这不起作用.
所以,你们都准备好做一个大的SVN提交并且因为你的某些文件中的行结尾不一致而爆炸.有趣的是,您正在查看跨越数十个不同深度文件夹的1,000个文件.
你是做什么?
eol ×10
newline ×4
line-endings ×2
svn ×2
git-svn ×1
history ×1
java ×1
line-breaks ×1
linefeed ×1
php ×1
powershell ×1
python ×1
regex ×1
replace ×1
sublimetext2 ×1
text-files ×1
vim ×1
whitespace ×1
windows ×1