【问题标题】:Android edit/insert into stringAndroid编辑/插入字符串
【发布时间】:2016-02-29 06:20:29
【问题描述】:

我想知道如何以编程方式在 android 中编辑字符串。我正在从我的设备显示字符串到我的网站,而撇号破坏了 PHP 输出。所以为了解决这个问题,我需要添加字符中断,即:反斜杠'\'。

例如,如果我有这个字符串:I love filiberto's!
我需要 android 来编辑它:I love filiberto\'s!

但是,每个字符串都会有所不同,并且还会有其他字符我必须从 .我怎样才能做到这一点?

我想知道如何以编程方式在 android 中编辑字符串。我正在从我的设备显示字符串到我的网站,而撇号破坏了 PHP 输出。所以为了解决这个问题,我需要添加字符中断,即:反斜杠'\'。

这是我目前所拥有的,感谢 ANJ 的基本代码...:

if(title.contains("'")) {
    int i;
    int len = title.length();
    char[] temp = new char[len + 1]; //plus one because gotta add new
    int k = title.indexOf("'"); //location of apostrophe 
    for (i = 0; i < k; i++) { //all the letters before the apostrophe
        temp[i] = title.charAt(i); //assign letters to array based on index
    }
    temp[k] = 'L';  // the L is for testing purposes
    for (i = k+1; i == len; i++) { //all the letters after apostrophe, to end
        temp[i] = title.charAt(i); //finish the original string, same array
    }
    title = temp.toString(); //output array to string (?)
    Log.d("this is", title); //outputs gibberish
}

它输出随机字符..甚至与我的起始字符串不相似。有谁知道这可能是什么原因造成的?例如,字符串“Lol'ok”变成>>“%5BC%4042ed0380”

【问题讨论】:

    标签: android string insert edit


    【解决方案1】:

    我假设您将字符串存储在某处。假设字符串是:str。 您可以使用临时数组添加“/”。对于单个字符串:

        int len = str.length();
        char [] temp = new char[len+1];   //Temporary Array
        int k = str.indexOf("'"), i;      //Finding index of "'"
        for(i=0; i<k-1; i++) 
        {
         temp[i] = str.charAt(i);        //Copying the string before '
        }
        temp[k] = '/';                   //Placing "/" before '
        for(i=k; j<len; j++)
        {
            temp[i+1] = str.charAt(i);     //Copying rest of the string
        }
        String newstr = temp.toString();    //Converting array to string
    

    您可以对多个字符串使用相同的。只需将其作为一个函数并在需要时调用它。

    【讨论】:

    • 我目前正在尝试实现这一点,但是我遇到了问题。我假设有一个快速修复;我只是不知道。我需要让它成为一个后斜杠,\,而不是一个正斜杠。但是反斜杠会阻止结束引号。我怎样才能解决这个问题?此外,运行此命令会随机输出我的文本,例如:%5BC%4042e5a9b8...我不明白。这是因为它是从一个字符串到一个数组,再到一个字符串吗?我是否必须将枚举保存到一个新字符串中,还是 Android 会处理它?另外,j 只是一个新的整数,还是应该用 I 代替,以便从中断的地方继续?
    • 抱歉 j 是个错误。应该只有我。
    • 对于反斜杠,看这个:stackoverflow.com/questions/6257316/illegal-escape-character。不过,我无法回答您的第三个问题。您是说 %5BC%4042e5a9b8 是您的原始字符串并且您无法转换它吗?
    • 例如字符串“I'm”变成“[C@42ebf1c0”
    • 我不知道为什么它不适合你。它在我的工作室中运行良好。一件事是改变“temp.toString();”到“Arrays.toString(temp);”。试试吧,这可能会奏效。
    【解决方案2】:

    字符串 API 有许多 API 调用可以提供帮助,例如 String.replaceAll。但是……

    撇号会破坏 PHP 输出

    然后修复 PHP 代码而不是要求“干净”的输入。最好的选择是选择一种支持良好的传输格式(比如 JSON 或 XML),并让每一端的 Json API 处理转义码。

    【讨论】:

    • 我对 JSON 完全不熟悉,我使用的是 MySQL PDO,而且要达到现在的位置非常困难,我认为清理输入会更容易,诗句输出
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-08-23
    • 2019-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-19
    • 1970-01-01
    相关资源
    最近更新 更多