我有像这样的字符串值
string strValue = "!return.ObjectV,rgmK12D;1.Value";
在此字符串中,如何从rgm to ;1
中删除字符?
下面的代码会删除rgm中的所有字符,但我只需删除;1
strValue = strValue.Substring(0, strValue.LastIndexOf("rgm"));
预期结果:
string strValue = "!return.ObjectV,.Value";
修改1:
我试图从下面的字符串中删除上面提到的字符
Sum ({rgmdaerub;1.Total_Value}, {rgmdaerub;1.Major_Value})
结果
Sum ({rgmdaerub;1.Total_Value}, {Major_Value})
预期结果
Sum ({Total_Value}, {Major_Value})
答案 0 :(得分:2)
使用正则表达式
string strValue = "!return.ObjectV,rgmK12D;1.Value";
var output = Regex.Replace(strValue, @" ?rgm.*?;1", string.Empty);
// !return.ObjectV,.Value
答案 1 :(得分:1)
一个简单的解决方案是:
public class MyGCMService extends GcmListenerService {
@Override
public void onMessageReceived(String from, Bundle data) {
String message = data.getString("message");
if(data.containsKey("type"))
{
String type = data.getString("type");
if(type.equalsIgnoreCase("qr_update"))
{
SharedPrefUtil.setSharedPref(getApplicationContext(), "qr", "");
}
}
else
{
sendNotification(message);
}
}
private void sendNotification(String message)
{
initiateNotification(message);
}
private void initiateNotification(String message)
{
Intent intent = new Intent(this, Splash.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0 /* Request code */, intent, PendingIntent.FLAG_ONE_SHOT);
Uri defaultSoundUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
NotificationCompat.Builder notificationBuilder = (NotificationCompat.Builder) new NotificationCompat.Builder(this)
.setSmallIcon(R.mipmap.ic_launcher)
.setContentTitle(getResources().getString(R.string.app_name))
//.setContentText(message)
.setAutoCancel(true)
.setSound(defaultSoundUri)
.setStyle(new NotificationCompat.BigTextStyle()
.bigText(message))
.setContentIntent(pendingIntent);
NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.notify(0 , notificationBuilder.build());
}
}
编辑:
根据您的编辑,您似乎希望所有事件都被替换。此外,您的预期结果有"。"也删除了。要替换所有出现的事件,您可以从@ Damith的答案中进行调整:
strValue = strValue.Substring(0, strValue.LastIndexOf("rgm")) + strValue.Substring(strValue.LastIndexOf(";1") + 2);
答案 2 :(得分:0)
一种方法是这样做:
strValue = strValue.Substring(0, strValue.LastIndexOf("rgm")) +
strValue.Substring(strValue.LastIndexOf(";1"), strValue.Length);
这样你得到第一部分和第二部分然后将它们连接在一起。如果您只有这些字符的一个实例,这将有效。
答案 3 :(得分:0)
你可以使用这样的东西。首先找到" rgm"和&#34 ;; 1"位置,然后删除这些索引之间的字符。
int start = strValue.LastIndexOf("rgm");
int end = strValue.LastIndexOf(";1");
string str = strValue.Remove(start, (end-start)+2);
答案 4 :(得分:0)
您可以使用string.IndexOf()
和string.Replace()
var i = strValue.IndexOf("rgm");
var j = strValue.IndexOf(";1");
var removePart = strValue.Substring(i, j - i);
strValue.Replace(removePart, string.Empty);