gpt4 book ai didi

java - 如何在 HTML.toHTML() 中使用字符串变量?

转载 作者:行者123 更新时间:2023-12-01 18:51:59 24 4
gpt4 key购买 nike

我的应用程序中有一个 EditText,用于将其内容作为 HTML 存储到 SQLite DB。

当我在文本中添加撇号(例如 Ajinkya 的应用程序)时,EditText 数据不会插入到数据库中,因为它将第一个撇号视为查询中断。

我在这里尝试了许多不同的建议解决方案,但没有成功。例如,我将“'”替换为“\'”,但代码(请参阅下一个代码块)在转换为 html 后仍然没有替换该符号。

String NotesContent = Html.toHtml(notes_content.getText());
String Notestitle = Html.toHtml(notes_title.getText());

if (Notestitle.contains("'")) {
Notestitle = Notestitle.replace("'", "\'");
}

if (NotesContent.contains("'")) {
NotesContent = NotesContent.replace("'", "\'");
}

因此,当我将 EditText 数据保存到字符串变量中,然后将其转换为 HTML 时,我首先尝试将“'”替换为“\'”(请参阅​​下一个代码块)。但函数 HTML.toHTML() 不接受字符串变量。

String NotesContent = notes_content.getText().toString();
String Notestitle = notes_title.getText().toString();

if (Notestitle.contains("'")) {
Notestitle = Notestitle.replace("'", "\'");
}

if (NotesContent.contains("'")) {
NotesContent = NotesContent.replace("'", "\'");
}

Notestitle = Html.toHtml(Notestitle); // does not accept Strings!

请帮我解决这个问题。

最佳答案

如果您使用 insert方便的方法,这将转义字符串。

举个例子(使用当我在文本中放置撇号时(例如 Ajinkya 的应用程序),EditText 数据不会插入到数据库中,因为它将第一个撇号视为查询中断。 (注意添加了一些 HTML)作为要存储和检索的数据):-

数据库助手DatabaseHelper.java

public class DatabaseHelper extends SQLiteOpenHelper {
public static final String DBNAME = "mydb";
public static final int DBVERSION = 1;

public static final String TABLE = "htmlstore";
public static final String IDCOLUMN = BaseColumns._ID;
public static final String HTMLCOLUMN = "html";

SQLiteDatabase db;

public DatabaseHelper(Context context) {
super(context, DBNAME, null, DBVERSION);
db = this.getWritableDatabase();

}

@Override
public void onCreate(SQLiteDatabase db) {
String crt_htmlstore_table = "CREATE TABLE IF NOT EXISTS " + TABLE + "(" +
IDCOLUMN + " INTEGER PRIMARY KEY," +
HTMLCOLUMN + " TEXT" +
")";
db.execSQL(crt_htmlstore_table);
}


public long insert(String html) {
ContentValues cv = new ContentValues();
cv.put(HTMLCOLUMN,html);
return db.insert(TABLE,null,cv); //<<<< does the escaping for you
}

public String getHTML(long id) {
String rv = "";
Cursor csr = db.query(TABLE,new String[]{HTMLCOLUMN},IDCOLUMN+"=?",new String[]{String.valueOf(id)},null,null,null);
if (csr.moveToFirst()) {
rv = csr.getString(csr.getColumnIndex(HTMLCOLUMN));
}
csr.close();
return rv;
}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

}
}

调用 Activity MainActivity.java:-

public class MainActivity extends AppCompatActivity {

TextView NotesTitle;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
NotesTitle = this.findViewById(R.id.notesview);

DatabaseHelper databaseHelper = new DatabaseHelper(this);
// Inserts into the database
databaseHelper.insert(
"When I put an apostrophe in the text <b>(e.g. Ajinkya's application)</b>, " + //<<<< BOLD ADDED
"the EditText data is not getting inserted into the database " +
"<i><strong>because it treats the first apostrophe as a query break</strong></>." //<<<< Italic String ADDED
);
// Extracts from the database and sets the notesview TextView with the extracted text from the HTML (if any)
NotesTitle.setText(Html.fromHtml(databaseHelper.getHTML(1L)));
}
}

结果:-

enter image description here

关于java - 如何在 HTML.toHTML() 中使用字符串变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59719312/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com