替换相同的字符串但具有不同的字符串值?

时间:2016-06-08 06:07:28

标签: android string android-edittext replaceall

这就是问题。

(1)__也是一颗星。(2)__围绕太阳旋转。

edittext1:_______ edittext2:_______

所以在第一个空白处,我显示了用户在编辑文本中输入的内容。 如果他键入Sun,那么输出将如下所示。

(1)_Sun_也是一颗星。(2)__围绕太阳旋转。

edittext1: Sun edittext2:_______

所以对于(1)我用我的编辑文本值替换“__”,如上所述。 怎么做(2)。 我用(2)尝试了相同的逻辑,但它也替换了第一个值。

(1)行星也是一颗星。(2)行星围绕着太阳。

edittext1: Sun

edittext2:行星

from smart_selects.db_fields import ChainedForeignKey

class Department(models.Model):
  department_name = models.CharField(max_length=20)

  def __str__(self):
    return self.department_name

class UserProfile(models.Model):
  user = models.OneToOneField(User)
  user_department = models.ForeignKey("Department")

  def __str__(self):
    return self.user.username

class SuperUser(models.Model):
  superuser = models.OneToOneField(User,limit_choices_to={'is_superuser':True},unique=True)
  head_department = models.ForeignKey("Department")

  def __str__(self):
          return self.superuser.username

class Request(models.Model):
      # user = models.ForeignKey(User,null=True,related_name="user")
      department = models.ForeignKey("Department")
      request_type = models.CharField(max_length=20,choices=typechoices)
      priority=models.CharField(max_length=20,choices=prioritychoices)
      description = models.TextField()
      sample = models.FileField(storage=fs,blank=True,null=True)
      approval_flag = models.BooleanField(default=False)
      status = models.CharField(max_length=20,choices=statuschoices,default='pending')
      created=models.DateTimeField(auto_now_add=True,null=True)
      modified = models.DateTimeField(auto_now=True)
      assigned_to = ChainedForeignKey(UserProfile,blank=True,null=True,chained_field="department",chained_model_field="user_department",show_all=False)
      approval_by = ChainedForeignKey(SuperUser,related_name="apprby",blank=True,null=True,chained_field="department",chained_model_field="head_department",show_all=False)

      def __str__(self):
          return str(self.id)

以上是完整的代码。

3 个答案:

答案 0 :(得分:1)

String string = "(1)__ is also a star.(2)__ revolves around the Sun.";
//First do a string split:
// then you'll have an array of strings 
String[] parts = string.split("__");

在第二个编辑文本侦听器中,您可以更改parts数组的第二个元素的结尾。 在第一个元素中,您可以更改第一个元素的结尾,依此类推。

要显示,只需打印整个字符串数组

答案 1 :(得分:0)

你不能。

您必须使第一个和第二个空白不同才能进行准确替换。您可以通过添加不同数量的下划线来实现此目的

String sentence = "(1)___ is also a star.(2)__ revolves around the Sun.";

sentence.replace("___", "Sun");
sentence.replace("__", "Planet");

或者您可以包含用于区分空白

的数字
String sentence = "(1)__ is also a star.(2)__ revolves around the Sun.";

sentence.replace("(1)__", "(1)" + "Sun");
sentence.replace("(2)__", "(2)" + "Planet");

答案 2 :(得分:0)

您可以使用以下功能:

String s = "1 abc 1 def";
Log.e("Test", replace(s, "1", "1test", "2test")); --> value: 1test abc 2test def
// fuction to replace
private String replace(String source, String toReplace, String... replacements) {
    StringBuilder stringBuilder = new StringBuilder(source);
    int startIndex = 0;
    for (int i = 0; i < replacements.length; i++) {
        int index = stringBuilder.indexOf(toReplace, startIndex);
        if (startIndex < 0) {
            break;
        }
        stringBuilder.replace(index, index + toReplace.length(), replacements[i]);
        startIndex = index + replacements.length;
    }
    return stringBuilder.toString();
}