我想替换特定位置的字符串。为此,我使用了str_replace()
PHP函数,但在那之后,我无法获得输出。在这里,我向您展示我想要的东西。
$str = "hello 8-7-2015 world -12";
// here I want replace - with ' desh ' but in date only. That I have detected using check before character if space than it should be 'minus' otherwise it should be 'desh'.
$key = strpos($str, "-");
if($key !== false){
$a = substr($str, $key-1 , 1);
if($a != " "){
$str = str_replace("-","desh",$str);
}else{
$str = str_replace("-","minus",$str);
}
}
我的输出如下:hello 8 desh 7 desh 2015 world desh 12
。 desh
我希望minus 12
到处都是@Override
public void onCreate(SQLiteDatabase db) {
String sql =
"CREATE TABLE IF NOT EXISTS users (" +
"_id INTEGER PRIMARY KEY, " +
"name TEXT NOT NULL, " +
"password TEXT NOT NULL);";
db.execSQL(sql);
sql = "INSERT INTO users VALUES ('testuser', 'textpassword')";
db.execSQL(sql);
}
。其他值是可以的,不应该更改。
意味着特定的位置变化。
答案 0 :(得分:2)
因为str_replace
对整个字符串生效而与你的$ key变量没有任何关系,所以你的情况没有意义。
$str = str_replace(" -","minus",$str);
$str = str_replace("-","desh",$str);
事实是,你甚至不需要那种条件。当搜索项前面有空格而第二个str_replce没有时,只需使用第一个str_replace。 (命令它很重要)。
答案 1 :(得分:2)
您的代码(带有if
)不会循环查找所有匹配项的字符串,因此当所有匹配项都发生更改时,应该会向您发出警告标记。
它的作用是找到第一个出现,其前面没有空格,然后执行:
str_replace("-","desh",$str);
替换字符串中的所有次出现。为了做你想做的事,你只需要:
str_replace(" -"," minus",$str);
str_replace("-","desh",$str);
这将首先处理以空格开头的所有-
字符,并将其转换为" minus"
。
然后,第二行将处理所有剩余的-
个字符,并将其替换为"desh"
。
顺便说一下,如果你这样做是为了能够"说"单词(在文本到语音(TTS)程序的意义上),你可能希望在你添加的单词的两边都有空格。您可以通过非常小的修改来实现这一目标:
str_replace(" -"," minus ",$str);
str_replace("-"," desh ",$str);
这可能使您的TTS代码更容易处理单词。
答案 2 :(得分:0)
您可以使用正则表达式:
$str = preg_replace(
['/(\d{1,2})-(\d{1,2})-(\d{2,4})/','/-(\d+)/'],
['$1 desh $2 desh $3', 'minus $1'],
$str);
答案 3 :(得分:0)
检查一下, 首先,您必须从字符串中获取日期,然后在与其他字符串连接后更改日期格式
$str = explode(' ',$str);
$str1 = str_replace("-","desh",$str[1]);
$str2 = str_replace("-","minus",$str[2]);
$str = $str[0].$str1.$str2;