【问题标题】:Replace Specific Character and setText from getName specific Character从 getName 特定字符替换特定字符和 setText
【发布时间】:2019-10-10 18:04:14
【问题描述】:

请帮我解决这个问题,

文件名:海滩视频@instagram.mp4

我的问题 1 我只想获取“海滩视频”并删除“@”直到结束词

我的问题 2 我只想得到“@”直到结束词,并在“@”之前添加一个字符串“source”

  • 结果问题1:沙滩视频
  • 结果问题 2:来源@instagram

注意:这不仅仅是一个文件,还有很多不同的文件 名字。但是格式是一样的。

我试试这个,但只删除最后 10 个字符

Edit_Text(file.getName().replace(".mp4","").replaceFirst(".{10}$",""));

        videoUrl = picturePath  ;
        File file = new File(videoUrl);
        Log.v("SIZE",file.getName()+"");
        title.setText(file.getName());
        Edit_Text(file.getName().replace(".mp4","").replaceFirst(".{10}$",""));

【问题讨论】:

    标签: java android regex android-studio


    【解决方案1】:

    您可以使用简单的正则表达式来解析您的文件名并将您想要的文本捕获到两个组中,然后按照您想要的方式使用它们。这个 Java 代码应该会有所帮助。它的工作方式是,正则表达式首先捕获@ 之前的所有内容(使用(.*)),不包括之前的任何空格,第二部分从@ 开始捕获,后跟一个或多个使用@ 的点以外的任何字符987654324@

    String s = "Beach Video @instagram.mp4";
    Pattern p = Pattern.compile("(.*)\\s*(@[^.]+).*");
    Matcher m = p.matcher(s);
    if (m.matches()) {
        System.out.println("First part: " + m.group(1));
        System.out.println("Second part: Source " + m.group(2));
    } else {
        System.out.println("Unexpected file format");
    }
    

    以您想要的方式打印两个结果,

    First part: Beach Video 
    Second part: Source @instagram
    

    你能检查一下这是否适合你吗?

    【讨论】:

    • 感谢您的回答,第一部分使用“(@[^.]+)”对我有用,但第二部分无法使用,“(.*)”这个正则表达式替换所有字符串
    • 还有其他建议吗?
    • @takoyaki:如果您尝试使用我的代码,您将只使用一个正则表达式获得您想要的两个字符串。但我猜你正在分别尝试使用(@[^.]+) 可以工作的两个正则表达式,但如果你尝试使用(.*),那么它将匹配整个输入并且不能单独工作,在这种情况下你可以使用[^@]+ 来捕获文本在您的字符串中 @ 之前。
    • [^@]+ 只显示“@”
    • 我的代码:setText(file.getName().replace(".mp4","").replaceAll("([^@]+)",""));
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-09
    • 2012-09-04
    相关资源
    最近更新 更多