java - 在 Java 中展开选项卡

标签 java string whitespace

你知道将文本的字符扩展为空格的 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/

相关文章:

c - 如何在给定代码中接受 C 中字符串中的空格

python - 将空字典转换为空字符串

java - 替换字符串中的多个单词 ln java like php str_replace

css - 标题上方的空格不会离开。在 safari 中可以,但在 firefox 中不行

java - 瓶啤酒

java - 如何知道 map 中某个位置何时位于另一个位置的前面/后面

java - Java Web 应用程序中的上下文路径是如何设置的?

java - 更改 ScrollBar 末端按钮的背景颜色

javascript - 一个函数,接受包含空格和标点符号的句子并返回删除它们的字符串

css - 如何消除网站底部的空白?