删除c#之间的字符

时间:2016-11-23 05:27:54

标签: c# asp.net .net

我有像这样的字符串值

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})

5 个答案:

答案 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);