我有一个这样的专栏:
public class test extends AppCompatActivity{
public int number ;
private Button btn1;
private Button btn2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.testing);
btn1=(Button)findViewById(R.id.btn1);
btn2=(Button)findViewById(R.id.btn2);
test();
btn1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
if(number==1){
number=2;
}
Log.e("number value : ",String.valueOf(number));
}
});
btn2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
if(number==2){
number=1;
}
Log.e("number value : ",String.valueOf(number));
}
});
}
void test()
{
if(number<1) {
number = 1;
}
Log.e("number value : ",String.valueOf(number));
}
}
我想替换一个var(例如:第三个位置的一个,恰好是A),但保留其他任何一个。该位置由变量确定。所以我应该得到:
vars
-----------
|A|B|A|D|AB|B...
我知道我应该使用REPLACE和可能的SUBSTRING_INDEX,但我无法弄清楚如何使用。这是我尝试过的: 让我们说:pos = 3;
vars
-----------
|A|B|D|AB|B...
但这实际上取代了所有其他角色并保留了我需要替换的角色。
更新:请注意,我不知道我想替换什么var,只知道它的位置。
更新2:
vars = REPLACE(vars, (SUBSTRING_INDEX(SUBSTRING_INDEX(vars, '|', :pos), '|', -1)), '')
这就是诀窍,但我忘了提到vars并不总是| A和| B等,而且| AB,| AC ......所以这个位置不应该总是移动一个字符,但是直到下一个vars = Concat(substring(vars ,1,:pos-1), substring(vars,:pos+2))
。
答案 0 :(得分:1)
如果您知道位置编号6
是您的职位变量
SELECT concat(SUBSTRING('|A|B|A|D|G|B',1,6-2),SUBSTRING('|A|B|A|D|G|B',6+1) )
或者如果您知道第二次出现的字符串
SELECT REPLACE( '|A|B|A|D|G|B', concat( SUBSTRING_INDEX( '|A|B|A|D|G|B',
'|A', 2 ) , "|A" ) , SUBSTRING_INDEX( '|A|B|A|D|G|B', '|A', 2 ) )
答案 1 :(得分:1)
正如@Zohar所说,我同意你的模型被打破了。然而,如果你想实现,这里有locate
,substring
,concat
的例子:
第一个locate
第一个|A
第一个|A
的索引将始终位于其之后。
locate('|A','|A|B|A|D|G|B', locate('|A','|A|B|A|D|G|B')+1)
- 这里+1表示第一个索引
第二次找到sub-string after the second occurrence of |A
substring('|A|B|A|D|G|B',locate('|A','|A|B|A|D|G|B', locate('|A','|A|B|A|D|G|B')+1)+2)
- 此处+2表示字符串的长度为
|A
第三次找到sub-string before the second occurrence of |A
substring('|A|B|A|D|G|B',locate('|A','|A|B|A|D|G|B', 1,locate('|A','|A|B|A|D|G|B')+1)-1)
- 这里-1表示
之前从开始到字符的任何事情|A
第四,concat
第二次出现|A
Concat( substring('|A|B|A|D|G|B',locate('|A','|A|B|A|D|G|B',1,locate('|A','|A|B|A|D|G|B')+1)-1), substring('|A|B|A|D|G|B',locate('|A','|A|B|A|D|G|B', locate('|A','|A|B|A|D|G|B')+1)+2) )
编辑1:如果您准备好了解您的位置,就像在您的更新中一样:
vars = Concat(substring(vars ,1,:pos-1), substring(vars,:pos+2))
编辑2:
如果您需要替换到下一个|
,则可以使用评论同时使用location
和substring
这样的内容:
vars = CONCAT(SUBSTRING(vars ,1,:pos-1), SUBSTRING(vars,LOCATE('|',vars, :pos+1)))
答案 2 :(得分:0)
我设法通过使用PHP获得了我想要的结果。我已经将$ vars展开到代码中的数组中,然后使用unset($ vars [$ pos])删除设置位置的var。