如何在Java中移除特定字符之前的所有字符?

32
我有一个字符串,并且通过HTML表单获取值,当我获取到这个值时,它会作为URL显示,因此我想要移除在特定字符=之前的所有字符以及这个字符本身。我只需要保留=之后的值,因为我需要从变量中提取该值。 编辑:我需要移除=,因为我正在尝试获取它后面的字符/值...

3
split() 函数怎么样,只用第二个值呢? - XtremeBaumer
@ItamarGreen 是的,但是解释非常不清楚。 - Shariq Musharaf
@XtremeBaumer,然后执行 split(url,2),以防万一。 - AxelH
2
你真正想要的是解析查询参数。请参考这个问题:https://dev59.com/HWYr5IYBdhLWcg3wi6zd - Adriaan Koster
@ShariqMusharaf,你搞定了吗? - ItamarG3
显示剩余13条评论
6个回答

69

您可以使用.substring()

String s = "the text=text";
String s1 = s.substring(s.indexOf("=") + 1);
s1.trim();

那么s1包含原始字符串中=后面的所有内容。

s1.trim()

.trim()会移除字符串开头(非空格字符,如字母、数字等)之前的所有空格(即前导空格),并且移除字符串结尾最后一个字符之后的所有空格(即尾随空格)。


2
如果有多个 =,您可以使用 s.lastIndexOf("=") 获取最后一个出现的索引。 - Irina S.
只是为了补充一下,如果有人想要在等号之前获取文本,可以使用以下代码:String s1 = s.substring(0, s.indexOf("=")); 这样s1就包含原始字符串中等号之前的所有内容。 - Kevin

8

虽然有很多答案,这里提供一个正则表达式的示例

String test = "eo21jüdjüqw=realString";
test = test.replaceAll(".+=", "");
System.out.println(test);

// prints realString

说明:

.+ 匹配除行终止符之外的任何字符
+ 量词 —— 匹配一次或多次,尽可能多地匹配(贪婪匹配)
= 匹配等号字符 = (区分大小写)

这也是从https://regex101.com/复制粘贴而来的,你可以在该网站上尝试正则表达式。


@ShariqMusharaf 这是我随机选择的。变量test是您的HTML字符串。 - Murat Karagöz

6
您可以将字符串从等号“=”处分割并分离成数组,然后获取数组的第二个值作为等号之后的值。例如: ``` String CurrentString = "Fruit = they taste good"; String[] separated = CurrentString.split("="); separated[0]; //这将包含"Fruit" separated[1]; //这将包含"they teste good" ``` 然后,`separated[1]` 将包含原始字符串中等号之后的所有内容。

1
我需要把"="也删除掉。 - Shariq Musharaf
是的,它将删除那个“=”并将其存储在separated[1]中,这正是您想要的。 - Arjun Mehta
1
不是所有东西!试试这个 Op = 4 = 2 + 2 - AxelH

3

我知道这个问题是关于Java的,但这似乎也是Kotlin的第一个搜索结果,所以你应该知道KotlinString.substringAfter(delimiter: String, missingDelimiterValue: String = this)扩展来处理这种情况。

它的实现是:

val index = indexOf(delimiter)
return if (index == -1) 
    missingDelimiterValue 
else 
    substring(index + delimiter.length, length)

2
如果您使用Apache Commons Lang3库,则可以使用StringUtils实用程序类的substringAfter方法。请注意,此方法将返回输入字符串中指定子字符串之后的所有内容。
官方文档在这里
示例:
String value = StringUtils.substringAfter("key=value", "=");   

// in this case where a space is in the value (e.g. read from a file instead of a query params)
String value = StringUtils.trimToEmpty(StringUtils.substringAfter("key = value", "="));   // = "value"
    

它处理值中可能包含'='字符的情况,因为它只采用第一次出现的情况。

如果您的键和值也包含'='字符,则不起作用(但其他方法也是如此); 在URL查询参数中,这种字符应该被转义。


1
也许需要定位URL字符串中字符的第一个出现位置。例如:
String URL = "http://test.net/demo_form.asp?name1=stringTest";

int index = URL.indexOf("=");

然后,根据索引将字符串拆分。
String Result = URL.substring(index+1); //index+1 to skip =

字符串“Result”现在包含值:stringTest


@sha 如果您不想包含“=”,只需将索引增加1即可。 - yogur

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接