你知道将文本的字符扩展为空格的 java 方法吗?
我的文字:
1. <tab> firstpoint <tab> page 1
10. <tab> secondpoint <tab> page 10
如果我直接用例如 4 个空格替换制表符,我将有
1. firstpoint page1
10. secondpoint page2
取而代之的是,我需要一种方法来将每个制表符替换为它真正对应的空格数(就像 vim 的命令 :retab 所做的那样)。有什么解决办法吗?
最佳答案
我认为忽略初始选项卡的 retab() 函数可能存在问题。我自己做的;特此置于公共(public)领域。
public static String expandTabs(String s, int tabSize) {
if (s == null) return null;
StringBuilder buf = new StringBuilder();
int col = 0;
for (int i = 0; i < s.length(); i++) {
char c = s.charAt(i);
switch (c) {
case '\n' :
col = 0;
buf.append(c);
break;
case '\t' :
buf.append(spaces(tabSize - col % tabSize));
col += tabSize - col % tabSize;
break;
default :
col++;
buf.append(c);
break;
}
}
return buf.toString();
}
public static String spaces(int n) {
StringBuilder buf = new StringBuilder();
for (int sp = 0; sp < n; sp++) buf.append(" ");
return buf.toString();
}
关于java - 在 Java 中展开选项卡,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11722855/