Java 删除字符串中数字之后的任何内容

Java 删除字符串中数字之后的任何内容,java,string,Java,String,如何在android中删除数字后的字符 假设我的字符串是 A1SS A2SS 2SS 3SS 5SS 我的输出应该是 A1 A2 2 3 5 使用for执行此操作 将案例AA22S更新为AA22。谢谢@meo_3_the 例如: String s = "A1SS"; StringBuilder newStr = new StringBuilder(""); boolean detected = false; for (int i = 0; i < s.l

如何在android中删除数字后的字符

假设我的字符串是

A1SS
A2SS
2SS
3SS
5SS
我的输出应该是

A1
A2
2
3
5

使用
for
执行此操作

将案例
AA22S
更新为
AA22
。谢谢@meo_3_the

例如:

    String s = "A1SS";
    StringBuilder newStr = new StringBuilder("");
    boolean detected = false;
    for (int i = 0; i < s.length(); i++) {
        if (s.charAt(i) >= '0' && s.charAt(i) <= '9'){
            newStr.append(s.charAt(i));
            detected = true;
        }else{
            if (!detected)
                newStr.append(s.charAt(i));
            else
                break;
        }
    }
String s=“A1SS”;
StringBuilder newStr=新的StringBuilder(“”);
布尔检测=假;
对于(int i=0;i如果(s.charAt(i)>=“0”和&s.charAt(i)如果输入是AB22CD,则希望结果是AB22或只是AB2。
编辑:因此,您可以使用以下代码:

public String removeCharactersAfterNumber(String input) {
    int index;
    for (index = 0; index < input.length(); index++) {
        if (input.charAt(index)  >= '0' && input.charAt(index) <= '9'){
            break;
        }
    }
    while (input.charAt(index)  >= '0' && input.charAt(index) <= '9') index++;
    return input.substring(0, index);
}
public String removeCharactersAfterNumber(字符串输入){
整数指数;
对于(索引=0;索引如果(input.charAt(index)>='0'&&input.charAt(index)='0'&&input.charAt(index)让我们假设您在一个名为输出的变量中获得值

要删除字符串中的一个SS,可以使用replace

output = output.replace("SS", "");
或者,如果必须删除字符串中的多个SS,则可以使用replaceAll

output = output.replaceAll("SS", "");

我想这可能对你有帮助

String value = your_string.replaceAll("[^0-9]","");

简单方式:比其他方式更快

public String getData(String val){
        String dat =val;
        boolean intFound=false;
        for (int i=0; i < val.length(); i++) {
            char c = val.charAt(i);
            if (Character.isDigit(c)) {
                dat = val.substring(0, i + 1);
                intFound = true;
            } else if (intFound) {
                break;
            }
        }
        return dat;
    }
简单性

它将适用于你的所有情况

  • “A434AS”
    返回
    “A434”

  • “3FG”
    返回
    “3”

  • “ERT45”
    返回
    “ERT45”

  • “SDF34DFG2”
    由于Ole V.V,返回了
    “SDF34”

逻辑:

  • 将字符串传递给方法
  • 检测
    字符串中的整数位置
  • 忽略整数后面的另一个字符
  • 子字符串
    返回到该位置

  • 多亏了兔子先生

    你可以使用下面的方法,这种方法在所有情况下都有效

        public String getModifiedString(String string) {
            String modifiedString = "";
    
            for(int index = 0; index < string.length(); index++) {
                char currentChar = string.charAt(index);
                if(Character.isLetter(currentChar)) {
                    modifiedString += currentChar;
                } else if(Character.isDigit(currentChar)) {
                    modifiedString += currentChar;
    
                    for(int digitIndex = index+1; digitIndex < string.length(); digitIndex++) {
                        if(Character.isDigit(string.charAt(digitIndex))) {
                            modifiedString += string.charAt(digitIndex);
                        }
                    }
    
                    return modifiedString;
                }
            }
    
            return modifiedString;
        }
    

    我认为使用正则表达式(朋友间的regex或regexp)最简单:

    给定问题中的字符串,此方法生成您要求的输出。它考虑到您的数字可能由多个数字组成。例如,
    A27B
    变为
    A27
    。如果有多个数字,它会在第一个数字后截断,例如,
    A7B4S
    给出
    A7
    。如果您愿意不同的行为,根据您的需求修改正则表达式可能并不困难

    我不会在这里解释regexps的基础知识。这里有一些教程,请使用您的搜索引擎。您当然会想了解代码中发生了什么

    如果出于某种原因,你不能或不想使用ReGEXP,一些其他答案演示如何手工编写一个解决方案。这是我的好度量的版本。我希望这些评论解释正在发生的事情,我自己认为它简单明了。

        int index = 0;
        // find the number
        while (index < stringWithNumber.length() && ! Character.isDigit(stringWithNumber.charAt(index))) {
            index++;
        }
        if (index == stringWithNumber.length()) { // no number found
            throw new IllegalArgumentException("No number in string " + stringWithNumber);
        }
        // find end of number
        while (index < stringWithNumber.length() && Character.isDigit(stringWithNumber.charAt(index))) {
            index++;
        }
        return stringWithNumber.substring(0, index);
    
    int索引=0;
    //找到号码
    while(索引
    1)您可以使用正则表达式来满足您的需要,也可以对字符串进行迭代以计算可以执行子字符串的结束索引。

    2) 在您的示例中,没有显示在一系列数字之后截断字符串的情况。
    我将向您展示这两种解决方案

    3) 通过对字符串进行迭代,一般思路是:要么未检测到搜索的模式,因此返回原始字符串;要么已检测到,则返回与之关联的子字符串。

    下面是一个类,它为每种情况提供了一种方法,并带有一个示例ex:

    public class TruncateStringAfterDigit {
    
        public static void main(String[] args) {
    
            String s = "ba123";
    
            String valueTrimedAfterDigits = getValueTrimedAfterDigits(s);
            System.out.println(valueTrimedAfterDigits);
    
            String valueTrimedAfterDigit = getValueTrimedAfterOneDigit(s);
            System.out.println(valueTrimedAfterDigit);
        }
    
        private static String getValueTrimedAfterDigits(String s) {
    
            boolean isAtLeastANumberFound = false;
    
            for (int i = 0; i < s.length(); i++) {
    
                if (Character.isDigit(s.charAt(i))) {
                    isAtLeastANumberFound = true;
                }
    
                else if (isAtLeastANumberFound) {
                    return s.substring(0, i+1);
                }
            }
    
            return s;
        }
    
        private static String getValueTrimedAfterOneDigit(String s) {
    
            for (int i = 0; i < s.length(); i++) {
    
                if (Character.isDigit(s.charAt(i))) {
                    return s.substring(0, i + 1);
                }
            }
    
            return s;
        }
    }
    
    公共类TruncateStringAfterDigit{
    公共静态void main(字符串[]args){
    字符串s=“ba123”;
    字符串valueTrimedAfterDigits=getValueTrimedAfterDigits;
    System.out.println(数字后的值修剪);
    字符串valueTrimedAfterDigit=getValueTrimedAfterOneDigit;
    System.out.println(数字后的值修剪);
    }
    私有静态字符串getValueTrimedAfterDigits(字符串s){
    布尔值isAtLeastANumberFound=false;
    对于(int i=0;i
    渲染输出:

    ba123

    ba1

    简单方法:

             String input="mhd60oug",result;
             int LastDigitid = -1;
           for(int i=0; i < input.length(); i++){
               char c = input.charAt(i);
               if(Character.isDigit(c)){
                   LastDigitid = i;
               }
           }
           if(LastDigitid != -1){
              result = input.substring(0,LastDigitid+1);
           }
           else{
               result = input;
           }
           System.out.println(result);
    
    String input=“mhd60oug”,结果;
    int LastDigitid=-1;
    对于(int i=0;i
    更新

    这种方法只能在字符串中的最后一个数字之后才起作用。询问者没有确切解释他想在问题中使用哪种情况

    主要有以下几种情况:

  • 字符串
    具有多个数字,如
    A1SS23BD
  • 在这种情况下,您想要的结果是什么
        int index = 0;
        // find the number
        while (index < stringWithNumber.length() && ! Character.isDigit(stringWithNumber.charAt(index))) {
            index++;
        }
        if (index == stringWithNumber.length()) { // no number found
            throw new IllegalArgumentException("No number in string " + stringWithNumber);
        }
        // find end of number
        while (index < stringWithNumber.length() && Character.isDigit(stringWithNumber.charAt(index))) {
            index++;
        }
        return stringWithNumber.substring(0, index);
    
    public class TruncateStringAfterDigit {
    
        public static void main(String[] args) {
    
            String s = "ba123";
    
            String valueTrimedAfterDigits = getValueTrimedAfterDigits(s);
            System.out.println(valueTrimedAfterDigits);
    
            String valueTrimedAfterDigit = getValueTrimedAfterOneDigit(s);
            System.out.println(valueTrimedAfterDigit);
        }
    
        private static String getValueTrimedAfterDigits(String s) {
    
            boolean isAtLeastANumberFound = false;
    
            for (int i = 0; i < s.length(); i++) {
    
                if (Character.isDigit(s.charAt(i))) {
                    isAtLeastANumberFound = true;
                }
    
                else if (isAtLeastANumberFound) {
                    return s.substring(0, i+1);
                }
            }
    
            return s;
        }
    
        private static String getValueTrimedAfterOneDigit(String s) {
    
            for (int i = 0; i < s.length(); i++) {
    
                if (Character.isDigit(s.charAt(i))) {
                    return s.substring(0, i + 1);
                }
            }
    
            return s;
        }
    }
    
             String input="mhd60oug",result;
             int LastDigitid = -1;
           for(int i=0; i < input.length(); i++){
               char c = input.charAt(i);
               if(Character.isDigit(c)){
                   LastDigitid = i;
               }
           }
           if(LastDigitid != -1){
              result = input.substring(0,LastDigitid+1);
           }
           else{
               result = input;
           }
           System.out.println(result);
    
    output = output.replaceAll("[^\\d]*$", "");