Android - 如何用另一个字符串替换字符串的一部分?

78
我有一些包含数字和英文单词的字符串,需要通过查找并替换成本地化版本的单词进行翻译。您知道如何轻松地在字符串中实现单词替换吗?
谢谢。
编辑:
我已尝试过(将字符串的一部分“to”替换为“xyz”):
string.replace("to", "xyz")

但它不起作用...

6个回答

200

这段代码是有效的,但它不会修改调用者对象,而是返回一个新的字符串。
因此,你只需要将其赋值给一个新的字符串变量或当前字符串本身:

string = string.replace("to", "xyz");
或者
String newString = string.replace("to", "xyz");

API文档

public String replace (CharSequence target, CharSequence replacement) 

自API Level 1起

将此字符串复制并替换指定目标序列中的出现次数为另一个序列。从头开始处理该字符串。

参数:

  • target: 要替换的序列。
  • replacement: 替换序列。

返回值:替换后的字符串。
抛出异常:NullPointerException 如果targetreplacement为空。


1
我该如何替换多个内容?例如,“替换字母h或l”? - Ruchir Baronia

2

也许对您有兴趣:

在Java中,字符串对象是不可变的。不可变意味着不可修改或不可更改。

一旦字符串对象被创建,它的数据或状态就无法更改,但会创建一个新的字符串对象。


2

Kotlin中没有replaceAll方法,所以我创建了这个循环来替换字符串或任何变量中的重复值。

 var someValue = "https://www.google.com.br/"
    while (someValue.contains(".")) {
        someValue = someValue.replace(".", "")
    }
Log.d("newValue :", someValue)
// in that case the stitches have been removed
//https://wwwgooglecombr/

1
String str = "to";
str.replace("to", "xyz");

只是尝试一下 :)


-2

rekaszeru

我注意到你在2011年留下了评论,但我还是想发布这个答案,以防有人需要“替换原始字符串”并遇到这个答案..

我将使用EditText作为示例


// 给目标文本框一个名称

 EditText textbox = (EditText) findViewById(R.id.your_textboxID);

// 需要替换的字符串

 String oldText = "hello"
 String newText = "Hi";      
 String textBoxText = textbox.getText().toString();

// 用返回的字符串替换字符串

String returnedString = textBoxText.replace( oldText, newText );

// 使用返回的字符串替换文本框中的新字符串

textbox.setText(returnedString);

这是未经测试的,但它只是一个使用返回的字符串来替换原始布局字符串并使用setText()的示例!显然,此示例要求您具有ID设置为your_textboxID的EditText。

-3

你只犯了一个错误。

在那里使用replaceAll()函数。

例如:

String str = "Hi";
String str1 = "hello";
str.replaceAll( str, str1 );

8
replaceAll() 函数不会改变原始字符串,它将处理后的字符串作为结果返回。 - rekaszeru

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