Java 删除字符串中数字之后的任何内容
如何在android中删除数字后的字符 假设我的字符串是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
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]*$", "");