从字符串中去除换行符。

8
这是我的问题: 我有一个数据库,里面装满了一部电视节目的剧集。其中一列表示剧集编号。我想要像这样在列表中显示剧集:
  • 第1集
  • 第2集
  • 第3集
  • 等等。
我使用自己的适配器类扩展SimpleCursorAdapter来完成这个任务……由于我有格式错误,所以我使用了Android.R.layout.simple_list_item_1Android.R.id.text1
基本上我之所以有一个定制的适配器,只是为了能够像这样做:
textView.setText("Episode " + cursor.getString("column_for_episode_number");

问题是我得到了一个看起来像这样的列表:
  • Episode
  • 1
  • Episode
  • 2
  • Episode
  • 3
当我尝试像这样做(在我的代码的不同部分工作的):
String text = "Episode " + cursor.getString("blah");
text = text.replaceAll("\\n","");

我得到了完全相同的列表输出 :(
为什么我不使用创建一个自定义视图,并使两个文本框并排放置?但这很难让我看起来漂亮 :/

如果记录“text”的值,你看到了什么?我怀疑你的光标没有返回你期望的结果。 - Ted Hopp
如果我记录cursor.getString("blah"),我会得到正确的数字...然后如果我记录"Episode " + cursorstuff,我会得到正确的文本(没有换行符显示)。 - IamAlexAlright
7个回答

12
text.replaceAll(System.getProperty("line.separator"), "");

7
你的代码有一个错误,请使用"\n"代替"\\n"。
String myString = "a string\n with new line"
myString = myString.replaceAll("\n","");
Log.d("myString",myString);

5

在替换之前检查开头是否有新行,并再次进行相同的测试:

for(int i=0; cursor.getString("blah").length()-1; i++)
{

   if(cursor.getString("blah").charAt(i)=='\\n')  <-- use the constant for the line separator
    { 
      Log.i("NEW LINE?", "YES, WE HAVE");
    }

}

或者使用.contains("\n")方法:

检查文本视图的宽度在xml中是否正确。

当你获取一个整数时,为什么要使用getString()?使用getInt(),然后在设置文本视图中的值时使用Integer.toString(theint)


getString和getInt真的有那么大的区别吗?顺便说一句,问题在于TextView的宽度...没事了-我解决了。 - IamAlexAlright
1
使用LayoutParams,然后找到设置布局参数的方法(我忘记了方法的名称),类似于textview.setLayoutParams(myLP);之类的,然后将其添加到布局中或者直接在xml文件中进行操作。根据你想要的外观效果,将其设置为fill_pattern或wrap_content。不要使用固定像素数。 - Nikola Despotoski
我忘记了我已经从另一个地方复制了大部分的自定义适配器,并且忘记修改布局参数 - 谢谢! - IamAlexAlright
没问题。对于详细阐述的问题,加一分。 - Nikola Despotoski

2
这可能会对您有所帮助:
response = response.replaceAll("\\s+","");

0

听起来你遇到的是换行问题而不是换行符问题。 把这个改成:

String text = "Episode " + cursor.getString("blah");

转换为这个:

String text = "Episode" + cursor.getString("blah");

看看是否会改变输出。请发布您的布局xml文件?


0

这对我有用(在Android 4.4上):

(其中body是从手持设备上的EditText视图输入换行符的字符串)

for (int i=0; i<body.length(); i++) {
    if (body.charAt(i) == '\n' || body.charAt(i) == '\t') {
        body = body.substring(0, i) + " " + body.substring(i+1, body.length());                         
    }
}

-1

你尝试过使用 cursor.getString("blah").trim() 吗?


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接