Java 当某些字符串具有不同的长度时,如何格式化多个字符串以获得相等的间距

Java 当某些字符串具有不同的长度时,如何格式化多个字符串以获得相等的间距,java,android,printf,string-formatting,formatter,Java,Android,Printf,String Formatting,Formatter,我尝试过使用String.format(“%-10s%s%20s”、stringPlaceNumber、用户名、ScoreNumberString) 我得到以下输出 . 如何使用正确数量的空格或不可见字符填充,使其看起来间隔适当 其他信息: -这是在安卓系统上的,所以在终端上尝试这一点并没有多大用处。字体具有可变宽度(即空格可以小于字符) 用户名来自一个Android EditText,它被输入到SQLite数据库中,一个BaseAdapter将前10个分数放入ListView 用户可以在游

我尝试过使用
String.format(“%-10s%s%20s”、stringPlaceNumber、用户名、ScoreNumberString)
我得到以下输出
. 

如何使用正确数量的空格或不可见字符填充,使其看起来间隔适当

其他信息: -这是在安卓系统上的,所以在终端上尝试这一点并没有多大用处。字体具有可变宽度(即空格可以小于字符)

  • 用户名来自一个Android EditText,它被输入到SQLite数据库中,一个
    BaseAdapter
    将前10个分数放入
    ListView
  • 用户可以在游戏结束时输入最多20个字符的分数名称
  • 这是代码的其余部分
`setAdapter(新的BaseAdapter(){ @凌驾 public int getCount(){ 返回分数。size(); }

            @Override
            public ScoreManager.Score getItem(int position) {
                return scores.get(position);
            }

            @Override
            public long getItemId(int position) {
                return 0;
            }

            @Override
            public View getView(int position, View convertView, ViewGroup parent) {
                ScoreManager.Score score = getItem(position);

                TextView view = new TextView(ScoresActivity.this);

                view.setText(String.format("%-10s %s %20s", getPlaceNumber(position+1),score.name.trim(), formatScore(score.score).trim()));
                view.setTextSize(5 * getResources().getDisplayMetrics().density);
                return view;
            }
        });
尝试:

尝试:


您可以使用字符串的
.trim()
方法。

您可以使用字符串的
.trim()
方法。

>使用空格或不可见字符使其看起来间隔适当。1.您的意思是在Listview中,那么为什么不使用对齐列表视图项呢?2.关于格式字符串,我测试了它并正确输出了字符串。从图像上看,它看起来只需要一个两个单元格的表格;为什么只有1个?这看起来像是XY问题,
String.format()
在这方面对您没有帮助,尤其是因为您使用的是可变宽度字体,我最终有点作弊。现在我将使用固定宽度字体。>空格或不可见字符使其看起来间隔适当。1.您的意思是在Listview中,为什么不使用对齐列表视图项呢?2.关于格式字符串,我测试了正确输出字符串。从您的图像看,似乎您需要一个两单元格的表格;为什么只有1个?这看起来像是一个XY问题,
string.format()
在这方面对您没有帮助,特别是因为您使用的是可变宽度字体,我最终有点作弊。现在,我将使用固定宽度字体。嗯,值得检查trim()那么,值得检查trim()函数。
String.format("%-10s %s %20s",stringPlaceNumber, userName.trim(), scoreNumberAsString.trim());